summaryrefslogtreecommitdiffstats
path: root/sys/boot/i386
diff options
context:
space:
mode:
authoriwasaki <iwasaki@FreeBSD.org>2002-10-01 19:31:09 +0000
committeriwasaki <iwasaki@FreeBSD.org>2002-10-01 19:31:09 +0000
commitf42743371e8d1b3ce264a6379e67a3b586ec86c3 (patch)
tree1c35ed9220891986624a2f7df3d77a567340c077 /sys/boot/i386
parent25500cc0636e900d7b9d50304aa270a9645970b5 (diff)
downloadFreeBSD-src-f42743371e8d1b3ce264a6379e67a3b586ec86c3.zip
FreeBSD-src-f42743371e8d1b3ce264a6379e67a3b586ec86c3.tar.gz
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
Diffstat (limited to 'sys/boot/i386')
-rw-r--r--sys/boot/i386/boot2/boot2.c2
-rw-r--r--sys/boot/i386/gptboot/gptboot.c2
-rw-r--r--sys/boot/i386/loader/main.c4
3 files changed, 6 insertions, 2 deletions
diff --git a/sys/boot/i386/boot2/boot2.c b/sys/boot/i386/boot2/boot2.c
index 1739579..ae3e3b3 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 1739579..ae3e3b3 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 a57d7d9..f302131 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();
OpenPOWER on IntegriCloud