david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

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.
This commit is contained in:
Michael Brown 2007-01-14 15:32:25 +00:00
parent c1fd6e8dc7
commit b9f99858ab
3 changed files with 17 additions and 44 deletions

View File

@ -20,6 +20,7 @@
#include <errno.h> #include <errno.h>
#include <realmode.h> #include <realmode.h>
#include <bios.h> #include <bios.h>
#include <memsizes.h>
#include <gpxe/memmap.h> #include <gpxe/memmap.h>
/** /**
@ -51,19 +52,6 @@ struct e820_entry {
static struct e820_entry __data16 ( e820buf ); static struct e820_entry __data16 ( e820buf );
#define e820buf __use_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 * Get size of extended memory via INT 15,e801
* *
@ -120,8 +108,11 @@ static unsigned int extmemsize_88 ( void ) {
* Get size of extended memory * Get size of extended memory
* *
* @ret extmem Extended memory size, in kB * @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; unsigned int extmem;
/* Try INT 15,e801 first, then fall back to INT 15,88 */ /* Try INT 15,e801 first, then fall back to INT 15,88 */

View File

@ -2,6 +2,7 @@
#include <assert.h> #include <assert.h>
#include <realmode.h> #include <realmode.h>
#include <gateA20.h> #include <gateA20.h>
#include <memsizes.h>
#include <gpxe/uaccess.h> #include <gpxe/uaccess.h>
#include <gpxe/segment.h> #include <gpxe/segment.h>
#include <gpxe/image.h> #include <gpxe/image.h>

View File

@ -1,36 +1,17 @@
#ifndef MEMSIZES_H #ifndef _MEMSIZES_H
#define 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) * Get size of base memory from BIOS free base memory counter
* specific, so I've moved them out of etherboot.h.
* *
* @ret basemem Base memory size, in kB
*/ */
static inline unsigned int basememsize ( void ) {
return get_fbms();
}
struct e820entry { extern unsigned int extmemsize ( void );
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
struct meminfo { #endif /* _MEMSIZES_H */
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 */