From 5bbad9c8f0eacf92fa0ddb6d2d34afe7a0d4278e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20Jaroszy=C5=84ski?=
Date: Tue, 27 Jul 2010 20:37:55 +0200
Subject: [PATCH] [ioapi] Move get_memmap() to the I/O API group
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
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
Signed-off-by: Michael Brown
---
src/arch/i386/core/relocate.c | 1 -
src/arch/i386/firmware/pcbios/hidemem.c | 2 +-
src/arch/i386/firmware/pcbios/memmap.c | 6 ++--
src/arch/i386/image/com32.c | 2 +-
src/arch/i386/image/multiboot.c | 2 +-
src/arch/i386/interface/pcbios/int13.c | 2 +-
.../i386/interface/pcbios/memtop_umalloc.c | 2 +-
src/drivers/net/b44.c | 3 +-
src/image/segment.c | 2 +-
src/include/ipxe/io.h | 26 ++++++++++++++
src/include/ipxe/memmap.h | 36 -------------------
src/interface/efi/efi_io.c | 12 +++++++
src/tests/umalloc_test.c | 2 +-
13 files changed, 51 insertions(+), 47 deletions(-)
delete mode 100644 src/include/ipxe/memmap.h
diff --git a/src/arch/i386/core/relocate.c b/src/arch/i386/core/relocate.c
index e966bbeaa..47450e757 100644
--- a/src/arch/i386/core/relocate.c
+++ b/src/arch/i386/core/relocate.c
@@ -1,6 +1,5 @@
#include
#include
-#include
/*
* Originally by Eric Biederman
diff --git a/src/arch/i386/firmware/pcbios/hidemem.c b/src/arch/i386/firmware/pcbios/hidemem.c
index 322be9e41..cc5fc28f7 100644
--- a/src/arch/i386/firmware/pcbios/hidemem.c
+++ b/src/arch/i386/firmware/pcbios/hidemem.c
@@ -23,7 +23,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include
#include
#include
-#include
+#include
#include
/** Set to true if you want to test a fake E820 map */
diff --git a/src/arch/i386/firmware/pcbios/memmap.c b/src/arch/i386/firmware/pcbios/memmap.c
index 8fa1f4c3d..01080c7b8 100644
--- a/src/arch/i386/firmware/pcbios/memmap.c
+++ b/src/arch/i386/firmware/pcbios/memmap.c
@@ -23,7 +23,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include
#include
#include
-#include
+#include
/**
* @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 );
diff --git a/src/arch/i386/image/com32.c b/src/arch/i386/image/com32.c
index 381987ab9..72e679f16 100644
--- a/src/arch/i386/image/com32.c
+++ b/src/arch/i386/image/com32.c
@@ -38,7 +38,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include
#include
#include
-#include
+#include
struct image_type com32_image_type __image_type ( PROBE_NORMAL );
diff --git a/src/arch/i386/image/multiboot.c b/src/arch/i386/image/multiboot.c
index b3c6b8f74..e2075defe 100644
--- a/src/arch/i386/image/multiboot.c
+++ b/src/arch/i386/image/multiboot.c
@@ -33,7 +33,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/src/arch/i386/interface/pcbios/int13.c b/src/arch/i386/interface/pcbios/int13.c
index a2cf5e6b9..f72dc5fa9 100644
--- a/src/arch/i386/interface/pcbios/int13.c
+++ b/src/arch/i386/interface/pcbios/int13.c
@@ -25,7 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/src/arch/i386/interface/pcbios/memtop_umalloc.c b/src/arch/i386/interface/pcbios/memtop_umalloc.c
index 51240f2ab..16736e194 100644
--- a/src/arch/i386/interface/pcbios/memtop_umalloc.c
+++ b/src/arch/i386/interface/pcbios/memtop_umalloc.c
@@ -29,7 +29,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include
#include
#include
-#include
+#include
#include
/** Alignment of external allocated memory */
diff --git a/src/drivers/net/b44.c b/src/drivers/net/b44.c
index 29aa5fa6b..a104652cb 100644
--- a/src/drivers/net/b44.c
+++ b/src/drivers/net/b44.c
@@ -43,7 +43,6 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include
#include
#include
-#include
#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);
diff --git a/src/image/segment.c b/src/image/segment.c
index c3f0b8d5c..97f6a9959 100644
--- a/src/image/segment.c
+++ b/src/image/segment.c
@@ -27,7 +27,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include
#include
-#include
+#include
#include
#include
diff --git a/src/include/ipxe/io.h b/src/include/ipxe/io.h
index 5bfd89987..b4d88fe89 100644
--- a/src/include/ipxe/io.h
+++ b/src/include/ipxe/io.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 */
diff --git a/src/include/ipxe/memmap.h b/src/include/ipxe/memmap.h
deleted file mode 100644
index cfd3fe9dc..000000000
--- a/src/include/ipxe/memmap.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef _IPXE_MEMMAP_H
-#define _IPXE_MEMMAP_H
-
-#include
-
-/**
- * @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 */
diff --git a/src/interface/efi/efi_io.c b/src/interface/efi/efi_io.c
index 13a3e2322..9a9aad31c 100644
--- a/src/interface/efi/efi_io.c
+++ b/src/interface/efi/efi_io.c
@@ -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 );
diff --git a/src/tests/umalloc_test.c b/src/tests/umalloc_test.c
index 157835d8d..53810833c 100644
--- a/src/tests/umalloc_test.c
+++ b/src/tests/umalloc_test.c
@@ -1,7 +1,7 @@
#include
#include
#include
-#include
+#include
void umalloc_test ( void ) {
struct memory_map memmap;