mirror of https://github.com/ipxe/ipxe.git
[ioapi] Move get_memmap() to the I/O API group
pcbios specific get_memmap() is used by the b44 driver making all-drivers builds fail on other platforms. Move it to the I/O API group and provide a dummy implementation on EFI. Signed-off-by: Piotr Jaroszyński <p.jaroszynski@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/1/head
parent
e3c7a1948d
commit
5bbad9c8f0
|
@ -1,6 +1,5 @@
|
|||
#include <ipxe/io.h>
|
||||
#include <registers.h>
|
||||
#include <ipxe/memmap.h>
|
||||
|
||||
/*
|
||||
* Originally by Eric Biederman
|
||||
|
|
|
@ -23,7 +23,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
|||
#include <basemem.h>
|
||||
#include <fakee820.h>
|
||||
#include <ipxe/init.h>
|
||||
#include <ipxe/memmap.h>
|
||||
#include <ipxe/io.h>
|
||||
#include <ipxe/hidemem.h>
|
||||
|
||||
/** Set to true if you want to test a fake E820 map */
|
||||
|
|
|
@ -23,7 +23,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
|||
#include <realmode.h>
|
||||
#include <bios.h>
|
||||
#include <memsizes.h>
|
||||
#include <ipxe/memmap.h>
|
||||
#include <ipxe/io.h>
|
||||
|
||||
/**
|
||||
* @file
|
||||
|
@ -282,7 +282,7 @@ static int meme820 ( struct memory_map *memmap ) {
|
|||
*
|
||||
* @v memmap Memory map to fill in
|
||||
*/
|
||||
void get_memmap ( struct memory_map *memmap ) {
|
||||
void x86_get_memmap ( struct memory_map *memmap ) {
|
||||
unsigned int basemem, extmem;
|
||||
int rc;
|
||||
|
||||
|
@ -310,3 +310,5 @@ void get_memmap ( struct memory_map *memmap ) {
|
|||
memmap->regions[1].end = 0x100000 + ( extmem * 1024 );
|
||||
memmap->count = 2;
|
||||
}
|
||||
|
||||
PROVIDE_IOAPI ( x86, get_memmap, x86_get_memmap );
|
||||
|
|
|
@ -38,7 +38,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
|||
#include <ipxe/image.h>
|
||||
#include <ipxe/segment.h>
|
||||
#include <ipxe/init.h>
|
||||
#include <ipxe/memmap.h>
|
||||
#include <ipxe/io.h>
|
||||
|
||||
struct image_type com32_image_type __image_type ( PROBE_NORMAL );
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
|||
#include <ipxe/uaccess.h>
|
||||
#include <ipxe/image.h>
|
||||
#include <ipxe/segment.h>
|
||||
#include <ipxe/memmap.h>
|
||||
#include <ipxe/io.h>
|
||||
#include <ipxe/elf.h>
|
||||
#include <ipxe/init.h>
|
||||
#include <ipxe/features.h>
|
||||
|
|
|
@ -25,7 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
|||
#include <assert.h>
|
||||
#include <ipxe/list.h>
|
||||
#include <ipxe/blockdev.h>
|
||||
#include <ipxe/memmap.h>
|
||||
#include <ipxe/io.h>
|
||||
#include <realmode.h>
|
||||
#include <bios.h>
|
||||
#include <biosint.h>
|
||||
|
|
|
@ -29,7 +29,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
|||
#include <errno.h>
|
||||
#include <ipxe/uaccess.h>
|
||||
#include <ipxe/hidemem.h>
|
||||
#include <ipxe/memmap.h>
|
||||
#include <ipxe/io.h>
|
||||
#include <ipxe/umalloc.h>
|
||||
|
||||
/** Alignment of external allocated memory */
|
||||
|
|
|
@ -43,7 +43,6 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
|||
#include <ipxe/netdevice.h>
|
||||
#include <ipxe/ethernet.h>
|
||||
#include <ipxe/if_ether.h>
|
||||
#include <ipxe/memmap.h>
|
||||
#include "b44.h"
|
||||
|
||||
|
||||
|
@ -89,6 +88,8 @@ int phys_ram_within_limit(u64 limit)
|
|||
struct memory_region *highest = NULL;
|
||||
get_memmap(&memmap);
|
||||
|
||||
if (memmap.count == 0)
|
||||
return 0;
|
||||
highest = &memmap.regions[memmap.count - 1];
|
||||
|
||||
return (highest->end < limit);
|
||||
|
|
|
@ -27,7 +27,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
|||
|
||||
#include <errno.h>
|
||||
#include <ipxe/uaccess.h>
|
||||
#include <ipxe/memmap.h>
|
||||
#include <ipxe/io.h>
|
||||
#include <ipxe/errortab.h>
|
||||
#include <ipxe/segment.h>
|
||||
|
||||
|
|
|
@ -503,4 +503,30 @@ void mb ( void );
|
|||
#define rmb() mb()
|
||||
#define wmb() mb()
|
||||
|
||||
/** A usable memory region */
|
||||
struct memory_region {
|
||||
/** Physical start address */
|
||||
uint64_t start;
|
||||
/** Physical end address */
|
||||
uint64_t end;
|
||||
};
|
||||
|
||||
/** Maximum number of memory regions we expect to encounter */
|
||||
#define MAX_MEMORY_REGIONS 8
|
||||
|
||||
/** A memory map */
|
||||
struct memory_map {
|
||||
/** Memory regions */
|
||||
struct memory_region regions[MAX_MEMORY_REGIONS];
|
||||
/** Number of used regions */
|
||||
unsigned int count;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get memory map
|
||||
*
|
||||
* @v memmap Memory map to fill in
|
||||
*/
|
||||
void get_memmap ( struct memory_map *memmap );
|
||||
|
||||
#endif /* _IPXE_IO_H */
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
#ifndef _IPXE_MEMMAP_H
|
||||
#define _IPXE_MEMMAP_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* Memory mapping
|
||||
*
|
||||
*/
|
||||
|
||||
FILE_LICENCE ( GPL2_OR_LATER );
|
||||
|
||||
/** A usable memory region */
|
||||
struct memory_region {
|
||||
/** Physical start address */
|
||||
uint64_t start;
|
||||
/** Physical end address */
|
||||
uint64_t end;
|
||||
};
|
||||
|
||||
/** Maximum number of memory regions we expect to encounter */
|
||||
#define MAX_MEMORY_REGIONS 8
|
||||
|
||||
/** A memory map */
|
||||
struct memory_map {
|
||||
/** Memory regions */
|
||||
struct memory_region regions[MAX_MEMORY_REGIONS];
|
||||
/** Number of used regions */
|
||||
unsigned int count;
|
||||
};
|
||||
|
||||
extern void get_memmap ( struct memory_map *memmap );
|
||||
|
||||
#endif /* _IPXE_MEMMAP_H */
|
|
@ -176,6 +176,17 @@ static void efi_iodelay ( void ) {
|
|||
outb ( 0, 0x80 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get memory map
|
||||
*
|
||||
* Can't be done on EFI so return an empty map
|
||||
*
|
||||
* @v memmap Memory map to fill in
|
||||
*/
|
||||
static void efi_get_memmap ( struct memory_map *memmap ) {
|
||||
memmap->count = 0;
|
||||
}
|
||||
|
||||
PROVIDE_IOAPI_INLINE ( efi, phys_to_bus );
|
||||
PROVIDE_IOAPI_INLINE ( efi, bus_to_phys );
|
||||
PROVIDE_IOAPI_INLINE ( efi, ioremap );
|
||||
|
@ -203,3 +214,4 @@ PROVIDE_IOAPI_INLINE ( efi, outsw );
|
|||
PROVIDE_IOAPI_INLINE ( efi, outsl );
|
||||
PROVIDE_IOAPI ( efi, iodelay, efi_iodelay );
|
||||
PROVIDE_IOAPI_INLINE ( efi, mb );
|
||||
PROVIDE_IOAPI ( efi, get_memmap, efi_get_memmap );
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#include <stdio.h>
|
||||
#include <ipxe/uaccess.h>
|
||||
#include <ipxe/umalloc.h>
|
||||
#include <ipxe/memmap.h>
|
||||
#include <ipxe/io.h>
|
||||
|
||||
void umalloc_test ( void ) {
|
||||
struct memory_map memmap;
|
||||
|
|
Loading…
Reference in New Issue