diff options
-rw-r--r-- | sys/boot/pc98/loader/main.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/sys/boot/pc98/loader/main.c b/sys/boot/pc98/loader/main.c index 60a1c9f..f51096b 100644 --- a/sys/boot/pc98/loader/main.c +++ b/sys/boot/pc98/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,15 @@ main(void) */ bios_getmem(); - setheap((void *)end, (void *)bios_basemem); +#ifdef LOADER_BZIP2_SUPPORT + heap_top = PTOV(memtop_copyin); + memtop_copyin -= 0x300000; + heap_bottom = PTOV(memtop_copyin); +#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 @@ -265,7 +276,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); } |