summaryrefslogtreecommitdiff
path: root/memdisk/setup.c
diff options
context:
space:
mode:
authorhpa <hpa>2001-12-11 01:20:33 +0000
committerhpa <hpa>2001-12-11 01:20:33 +0000
commit7de02ddf8887f37a5e3c0f810cbf45ac7029c165 (patch)
treed3c58b134dee7e2a5542bef8ce271a00f589a420 /memdisk/setup.c
parent0d064db972a8bdff2e508a56f07e533348b84017 (diff)
downloadsyslinux-7de02ddf8887f37a5e3c0f810cbf45ac7029c165.tar.gz
Don't initialize the E820 map statically -- it's too big
Diffstat (limited to 'memdisk/setup.c')
-rw-r--r--memdisk/setup.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/memdisk/setup.c b/memdisk/setup.c
index 196f33bb..a2e71fba 100644
--- a/memdisk/setup.c
+++ b/memdisk/setup.c
@@ -213,13 +213,11 @@ uint32_t setup(void)
printf("Ramdisk at 0x%08x, length 0x%08x\n",
shdr->ramdisk_image, shdr->ramdisk_size);
- /* Reserve the ramdisk memory */
- insertrange(shdr->ramdisk_image, shdr->ramdisk_size, 2);
-
geometry = get_disk_image_geometry(shdr->ramdisk_image, shdr->ramdisk_size);
- get_mem();
- parse_mem();
+ e820map_init(); /* Initialize memory data structure */
+ get_mem(); /* Query BIOS for memory map */
+ parse_mem(); /* Parse memory map */
printf("dos_mem = %#10x (%u K)\n"
"low_mem = %#10x (%u K)\n"
@@ -228,6 +226,10 @@ uint32_t setup(void)
low_mem, low_mem >> 10,
high_mem, high_mem >> 10);
+ /* Reserve the ramdisk memory */
+ insertrange(shdr->ramdisk_image, shdr->ramdisk_size, 2);
+ parse_mem(); /* Recompute variables */
+
/* Figure out where it needs to go */
hptr = (struct memdisk_header *) &_binary_memdisk_bin_start;
pptr = (struct patch_area *)(_binary_memdisk_bin_start + hptr->patch_offs);