From b9f99858ab4d4addd79587ac9ea0e50f818986d4 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Sun, 14 Jan 2007 15:32:25 +0000 Subject: [PATCH] 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. --- src/arch/i386/firmware/pcbios/memmap.c | 19 ++++-------- src/arch/i386/image/nbi.c | 1 + src/arch/i386/include/memsizes.h | 41 +++++++------------------- 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 6bbb22ac..7c1f3602 100644 --- a/src/arch/i386/firmware/pcbios/memmap.c +++ b/src/arch/i386/firmware/pcbios/memmap.c @@ -20,6 +20,7 @@ #include #include #include +#include #include /** @@ -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 */ diff --git a/src/arch/i386/image/nbi.c b/src/arch/i386/image/nbi.c index ad483b4f..2ce4d461 100644 --- a/src/arch/i386/image/nbi.c +++ b/src/arch/i386/image/nbi.c @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include diff --git a/src/arch/i386/include/memsizes.h b/src/arch/i386/include/memsizes.h index e64009ea..6222fd66 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 -/* - * 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 */