summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2002-03-30 23:00:05 +0000
committermarcel <marcel@FreeBSD.org>2002-03-30 23:00:05 +0000
commit83aa1632bb0b8706135df7bb695c019511ba8169 (patch)
tree19ac7d5e267eca6c21acb4ab09acec6a684bc339
parent84ad095a1c8ea2ab3b70872f4e100e782371e88b (diff)
downloadFreeBSD-src-83aa1632bb0b8706135df7bb695c019511ba8169.zip
FreeBSD-src-83aa1632bb0b8706135df7bb695c019511ba8169.tar.gz
Pass the physical address of the bootinfo block to the kernel in
register r8. We continue to write the bootinfo block at the same hardwired address, because the kernel still expects it there. It is expected that future kernels use register r8 to get to the bootinfo block and don't depend on the hardwired address anymore. Bump the loader version once again due to the interface change.
-rw-r--r--sys/boot/efi/libefi/elf_freebsd.c2
-rw-r--r--sys/boot/efi/loader/version2
-rw-r--r--sys/boot/ia64/common/exec.c2
-rw-r--r--sys/boot/ia64/efi/version2
4 files changed, 6 insertions, 2 deletions
diff --git a/sys/boot/efi/libefi/elf_freebsd.c b/sys/boot/efi/libefi/elf_freebsd.c
index 2aaaa39..1d99d72 100644
--- a/sys/boot/efi/libefi/elf_freebsd.c
+++ b/sys/boot/efi/libefi/elf_freebsd.c
@@ -129,7 +129,7 @@ enter_kernel(u_int64_t start, struct bootinfo *bi)
__asm __volatile("mov cr.iip=%0" :: "r"(start));
__asm __volatile("mov cr.ifs=r0;;");
__asm __volatile("mov ar.rsc=0;; flushrs;;");
-
+ __asm __volatile("mov r8=%0" :: "r" (bi));
__asm __volatile("rfi;;");
}
diff --git a/sys/boot/efi/loader/version b/sys/boot/efi/loader/version
index ce84d78..b1f04d7 100644
--- a/sys/boot/efi/loader/version
+++ b/sys/boot/efi/loader/version
@@ -3,6 +3,8 @@ $FreeBSD$
NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this
file is important. Make sure the current version number is on line 6.
+0.3: Pass the physical address of the bootinfo block in register r8
+ to the kernel. Continue to put it at the fixed address for now.
0.2: Much improved version. Significant is the support for passing
the FPSWA interface pointer to the kernel.
0.1: Initial EFI version, germinated from the NetBSD i386
diff --git a/sys/boot/ia64/common/exec.c b/sys/boot/ia64/common/exec.c
index 2aaaa39..1d99d72 100644
--- a/sys/boot/ia64/common/exec.c
+++ b/sys/boot/ia64/common/exec.c
@@ -129,7 +129,7 @@ enter_kernel(u_int64_t start, struct bootinfo *bi)
__asm __volatile("mov cr.iip=%0" :: "r"(start));
__asm __volatile("mov cr.ifs=r0;;");
__asm __volatile("mov ar.rsc=0;; flushrs;;");
-
+ __asm __volatile("mov r8=%0" :: "r" (bi));
__asm __volatile("rfi;;");
}
diff --git a/sys/boot/ia64/efi/version b/sys/boot/ia64/efi/version
index ce84d78..b1f04d7 100644
--- a/sys/boot/ia64/efi/version
+++ b/sys/boot/ia64/efi/version
@@ -3,6 +3,8 @@ $FreeBSD$
NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this
file is important. Make sure the current version number is on line 6.
+0.3: Pass the physical address of the bootinfo block in register r8
+ to the kernel. Continue to put it at the fixed address for now.
0.2: Much improved version. Significant is the support for passing
the FPSWA interface pointer to the kernel.
0.1: Initial EFI version, germinated from the NetBSD i386
OpenPOWER on IntegriCloud