summaryrefslogtreecommitdiffstats
path: root/sys/boot/pc98/boot2
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2006-10-29 14:50:58 +0000
committerru <ru@FreeBSD.org>2006-10-29 14:50:58 +0000
commitf0e19d90c0fc3bf47cab297e03cd0fc782076767 (patch)
tree8b907f11b53d6e4725c11716fdf425629834fc0a /sys/boot/pc98/boot2
parent248a5cec67d92bfe2d6ecfe22e5e82d80fbbbdc6 (diff)
downloadFreeBSD-src-f0e19d90c0fc3bf47cab297e03cd0fc782076767.zip
FreeBSD-src-f0e19d90c0fc3bf47cab297e03cd0fc782076767.tar.gz
Because the BTX mini-kernel now uses flat memory mode and clients
are no longer limited to a virtual address space of 16 megabytes, only mask high two bits of a virtual address. This allows to load larger kernels (up to 1 gigabyte). Not masking addresses at all was a bad idea on machines with less than >3G of memory -- kernels are linked at 0xc0xxxxxx, and that would attempt to load a kernel at above 3G. By masking only two highest bits we stay within the safe limits while still allowing to boot larger kernels. (This is a safer reimplmentation of sys/boot/i386/boot2/boot.2.c rev. 1.71.) Prodded by: jhb Tested by: nyan (pc98)
Diffstat (limited to 'sys/boot/pc98/boot2')
-rw-r--r--sys/boot/pc98/boot2/boot.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/boot/pc98/boot2/boot.c b/sys/boot/pc98/boot2/boot.c
index feccc7e..96dfb72 100644
--- a/sys/boot/pc98/boot2/boot.c
+++ b/sys/boot/pc98/boot2/boot.c
@@ -199,9 +199,9 @@ loadprog(void)
/*
* We assume that the entry address is the same as the lowest text
* address and that the kernel startup code handles relocation by
- * this address rounded down to a multiple of 16M.
+ * this address rounded down to a multiple of 1G.
*/
- startaddr = head.a_entry & 0x00FFFFFF;
+ startaddr = head.a_entry & 0x3FFFFFFF;
addr = startaddr;
printf("Booting %d:%s(%d,%c)%s @ 0x%x\n"
, dosdev & 0x0f
OpenPOWER on IntegriCloud