summaryrefslogtreecommitdiffstats
path: root/src/arch/i386/firmware/pcbios/memmap.c
diff options
context:
space:
mode:
authorMichael Brown2006-05-25 02:00:30 +0200
committerMichael Brown2006-05-25 02:00:30 +0200
commite4f8d6eed72c38a99d94b11015c0ef63024b296d (patch)
treea476a8a75f2ba2889c823b8eff50684546ae0943 /src/arch/i386/firmware/pcbios/memmap.c
parentDefine a struct memory_map with a fixed number of entries, rather than (diff)
downloadipxe-e4f8d6eed72c38a99d94b11015c0ef63024b296d.tar.gz
ipxe-e4f8d6eed72c38a99d94b11015c0ef63024b296d.tar.xz
ipxe-e4f8d6eed72c38a99d94b11015c0ef63024b296d.zip
Add a "count" field to struct memory_map.
Diffstat (limited to 'src/arch/i386/firmware/pcbios/memmap.c')
-rw-r--r--src/arch/i386/firmware/pcbios/memmap.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/arch/i386/firmware/pcbios/memmap.c b/src/arch/i386/firmware/pcbios/memmap.c
index 0a9373a7..daa1d99c 100644
--- a/src/arch/i386/firmware/pcbios/memmap.c
+++ b/src/arch/i386/firmware/pcbios/memmap.c
@@ -138,7 +138,7 @@ static unsigned int extmemsize ( void ) {
* @ret rc Return status code
*/
static int meme820 ( struct memory_map *memmap ) {
- unsigned int index = 0;
+ struct memory_region *region = memmap->regions;
uint32_t next = 0;
uint32_t smap;
unsigned int flags;
@@ -169,12 +169,13 @@ static int meme820 ( struct memory_map *memmap ) {
if ( e820buf.type != E820_TYPE_RAM )
continue;
- memmap->regions[index].start = e820buf.start;
- memmap->regions[index].end = e820buf.start + e820buf.len;
- index++;
+ region->start = e820buf.start;
+ region->end = e820buf.start + e820buf.len;
+ region++;
+ memmap->count++;
} while ( ( next != 0 ) &&
- ( index < ( sizeof ( memmap->regions ) /
- sizeof ( memmap->regions[0] ) ) ) );
+ ( memmap->count < ( sizeof ( memmap->regions ) /
+ sizeof ( memmap->regions[0] ) ) ) );
return 0;
}
@@ -202,4 +203,5 @@ void get_memmap ( struct memory_map *memmap ) {
memmap->regions[0].end = ( basemem * 1024 );
memmap->regions[1].start = 0x100000;
memmap->regions[1].end = 0x100000 + ( extmem * 1024 );
+ memmap->count = 2;
}