Make the getmemsize() prototype available in memsizes.h, for code that
authorMichael Brown <mcb30@etherboot.org>
Sun, 14 Jan 2007 15:32:25 +0000 (15:32 +0000)
committerMichael Brown <mcb30@etherboot.org>
Sun, 14 Jan 2007 15:32:25 +0000 (15:32 +0000)
doesn't want to go to the hassle of processing a full memory map.

src/arch/i386/firmware/pcbios/memmap.c
src/arch/i386/image/nbi.c
src/arch/i386/include/memsizes.h

index 6bbb22a..7c1f360 100644 (file)
@@ -20,6 +20,7 @@
 #include <errno.h>
 #include <realmode.h>
 #include <bios.h>
+#include <memsizes.h>
 #include <gpxe/memmap.h>
 
 /**
@@ -51,19 +52,6 @@ struct e820_entry {
 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
  *
@@ -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 */
index ad483b4..2ce4d46 100644 (file)
@@ -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>
index e64009e..6222fd6 100644 (file)
@@ -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 */