summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brown2007-01-14 16:32:25 +0100
committerMichael Brown2007-01-14 16:32:25 +0100
commitb9f99858ab4d4addd79587ac9ea0e50f818986d4 (patch)
treef6e22f0d18c03313b34f43ddbe53dceafb3ac78a /src
parentOnce image type has been set, do not autoprobe further (diff)
downloadipxe-b9f99858ab4d4addd79587ac9ea0e50f818986d4.tar.gz
ipxe-b9f99858ab4d4addd79587ac9ea0e50f818986d4.tar.xz
ipxe-b9f99858ab4d4addd79587ac9ea0e50f818986d4.zip
Make the getmemsize() prototype available in memsizes.h, for code that
doesn't want to go to the hassle of processing a full memory map.
Diffstat (limited to 'src')
-rw-r--r--src/arch/i386/firmware/pcbios/memmap.c19
-rw-r--r--src/arch/i386/image/nbi.c1
-rw-r--r--src/arch/i386/include/memsizes.h41
3 files changed, 17 insertions, 44 deletions
diff --git a/src/arch/i386/firmware/pcbios/memmap.c b/src/arch/i386/firmware/pcbios/memmap.c
index 6bbb22aca..7c1f36028 100644
--- a/src/arch/i386/firmware/pcbios/memmap.c
+++ b/src/arch/i386/firmware/pcbios/memmap.c
@@ -20,6 +20,7 @@
#include <errno.h>
#include <realmode.h>
#include <bios.h>
+#include <memsizes.h>
#include <gpxe/memmap.h>
/**
@@ -52,19 +53,6 @@ static struct e820_entry __data16 ( e820buf );
#define e820buf __use_data16 ( e820buf )
/**
- * Get size of base memory from BIOS free base memory counter
- *
- * @ret basemem Base memory size, in kB
- */
-static unsigned int basememsize ( void ) {
- uint16_t basemem;
-
- get_real ( basemem, BDA_SEG, 0x0013 );
- DBG ( "Base memory size %dkB\n", basemem );
- return basemem;
-}
-
-/**
* Get size of extended memory via INT 15,e801
*
* @ret extmem Extended memory size, in kB, or 0
@@ -120,8 +108,11 @@ static unsigned int extmemsize_88 ( void ) {
* Get size of extended memory
*
* @ret extmem Extended memory size, in kB
+ *
+ * Note that this is only an approximation; for an accurate picture,
+ * use the E820 memory map obtained via get_memmap();
*/
-static unsigned int extmemsize ( void ) {
+unsigned int extmemsize ( void ) {
unsigned int extmem;
/* Try INT 15,e801 first, then fall back to INT 15,88 */
diff --git a/src/arch/i386/image/nbi.c b/src/arch/i386/image/nbi.c
index ad483b4fb..2ce4d461f 100644
--- a/src/arch/i386/image/nbi.c
+++ b/src/arch/i386/image/nbi.c
@@ -2,6 +2,7 @@
#include <assert.h>
#include <realmode.h>
#include <gateA20.h>
+#include <memsizes.h>
#include <gpxe/uaccess.h>
#include <gpxe/segment.h>
#include <gpxe/image.h>
diff --git a/src/arch/i386/include/memsizes.h b/src/arch/i386/include/memsizes.h
index e64009ea7..6222fd66b 100644
--- a/src/arch/i386/include/memsizes.h
+++ b/src/arch/i386/include/memsizes.h
@@ -1,36 +1,17 @@
-#ifndef MEMSIZES_H
-#define MEMSIZES_H
+#ifndef _MEMSIZES_H
+#define _MEMSIZES_H
-#warning "This header is no longer functional; use memmap.h instead"
+#include <basemem.h>
-/*
- * These structures seem to be very i386 (and, in fact, PCBIOS)
- * specific, so I've moved them out of etherboot.h.
+/**
+ * Get size of base memory from BIOS free base memory counter
*
+ * @ret basemem Base memory size, in kB
*/
+static inline unsigned int basememsize ( void ) {
+ return get_fbms();
+}
-struct e820entry {
- uint64_t addr;
- uint64_t size;
- uint32_t type;
-#define E820_RAM 1
-#define E820_RESERVED 2
-#define E820_ACPI 3 /* usable as RAM once ACPI tables have been read */
-#define E820_NVS 4
-} __attribute__ (( packed ));
-#define E820ENTRY_SIZE 20
-#define E820MAX 32
+extern unsigned int extmemsize ( void );
-struct meminfo {
- uint16_t basememsize;
- uint16_t pad;
- uint32_t memsize;
- uint32_t map_count;
- struct e820entry map[E820MAX];
-} __attribute__ (( packed ));
-
-extern struct meminfo meminfo;
-
-extern void get_memsizes ( void );
-
-#endif /* MEMSIZES_H */
+#endif /* _MEMSIZES_H */