diff --git a/sys/boot/i386/loader/main.c b/sys/boot/i386/loader/main.c index ac31fd7929d..85d574b6997 100644 --- a/sys/boot/i386/loader/main.c +++ b/sys/boot/i386/loader/main.c @@ -72,6 +72,9 @@ extern char bootprog_name[], bootprog_rev[], bootprog_date[], bootprog_maker[]; /* XXX debugging */ extern char end[]; +static void *heap_top; +static void *heap_bottom; + int main(void) { @@ -88,7 +91,14 @@ main(void) */ bios_getmem(); - setheap((void *)end, (void *)bios_basemem); +#ifdef LOADER_BZIP2_SUPPORT + heap_top = PTOV(0x400000); + heap_bottom = PTOV(0x100000); +#else + heap_top = (void *)bios_basemem; + heap_bottom = (void *)end; +#endif + setheap(heap_bottom, heap_top); /* * XXX Chicken-and-egg problem; we want to have console output early, but some @@ -269,7 +279,8 @@ static int command_heap(int argc, char *argv[]) { mallocstats(); - printf("heap base at %p, top at %p\n", end, sbrk(0)); + printf("heap base at %p, top at %p, upper limit at %p\n", heap_bottom, + sbrk(0), heap_top); return(CMD_OK); }