From 31db71276afacb0cf7739e81348374ddd875acf5 Mon Sep 17 00:00:00 2001 From: Mitsuru IWASAKI Date: Tue, 1 Oct 2002 19:31:09 +0000 Subject: [PATCH] Don't call INT 12H anymore in boot program. Many recent machine have a broken INT 12H (Get base memory size) implementation and boot program stops if INT 12H is called. This commit should solve the problem at very first step of FreeBSD installation occurred on newer some machines. Reviewed by: bde, jhb MFC after: 1 week --- sys/boot/i386/boot2/boot2.c | 2 +- sys/boot/i386/gptboot/gptboot.c | 2 +- sys/boot/i386/loader/main.c | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/boot/i386/boot2/boot2.c b/sys/boot/i386/boot2/boot2.c index 1739579ee63c..ae3e3b3ea4b0 100644 --- a/sys/boot/i386/boot2/boot2.c +++ b/sys/boot/i386/boot2/boot2.c @@ -232,7 +232,7 @@ main(void) dsk.slice = *(uint8_t *)PTOV(ARGS + 1) + 1; bootinfo.bi_version = BOOTINFO_VERSION; bootinfo.bi_size = sizeof(bootinfo); - bootinfo.bi_basemem = memsize(MEM_BASE); + bootinfo.bi_basemem = 0; /* XXX will be filled by loader or kernel */ bootinfo.bi_extmem = memsize(MEM_EXT); bootinfo.bi_memsizes_valid++; for (i = 0; i < N_BIOS_GEOM; i++) diff --git a/sys/boot/i386/gptboot/gptboot.c b/sys/boot/i386/gptboot/gptboot.c index 1739579ee63c..ae3e3b3ea4b0 100644 --- a/sys/boot/i386/gptboot/gptboot.c +++ b/sys/boot/i386/gptboot/gptboot.c @@ -232,7 +232,7 @@ main(void) dsk.slice = *(uint8_t *)PTOV(ARGS + 1) + 1; bootinfo.bi_version = BOOTINFO_VERSION; bootinfo.bi_size = sizeof(bootinfo); - bootinfo.bi_basemem = memsize(MEM_BASE); + bootinfo.bi_basemem = 0; /* XXX will be filled by loader or kernel */ bootinfo.bi_extmem = memsize(MEM_EXT); bootinfo.bi_memsizes_valid++; for (i = 0; i < N_BIOS_GEOM; i++) diff --git a/sys/boot/i386/loader/main.c b/sys/boot/i386/loader/main.c index a57d7d93fe6e..f30213111858 100644 --- a/sys/boot/i386/loader/main.c +++ b/sys/boot/i386/loader/main.c @@ -129,6 +129,10 @@ main(void) if (devsw[i]->dv_init != NULL) (devsw[i]->dv_init)(); printf("BIOS %dkB/%dkB available memory\n", bios_basemem / 1024, bios_extmem / 1024); + if (initial_bootinfo != NULL) { + initial_bootinfo->bi_basemem = bios_basemem / 1024; + initial_bootinfo->bi_extmem = bios_extmem / 1024; + } /* detect ACPI for future reference */ biosacpi_detect();