summaryrefslogtreecommitdiffstats
path: root/sys/boot
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2002-03-30 23:52:34 +0000
committermarcel <marcel@FreeBSD.org>2002-03-30 23:52:34 +0000
commit688cf86e245339c72f4f3abf4dccfbb5748f103a (patch)
treebe055475bc8584100d76fbd3f756f795d8a2e879 /sys/boot
parent3d34c199201ae64f4f084e4ecb241e24ed857899 (diff)
downloadFreeBSD-src-688cf86e245339c72f4f3abf4dccfbb5748f103a.zip
FreeBSD-src-688cf86e245339c72f4f3abf4dccfbb5748f103a.tar.gz
Pass the address of the bootinfo block to the kernel in register
r8. Keep it at the hardwired address for now. Bump the version.
Diffstat (limited to 'sys/boot')
-rw-r--r--sys/boot/ia64/libski/elf_freebsd.c8
-rw-r--r--sys/boot/ia64/ski/elf_freebsd.c8
-rw-r--r--sys/boot/ia64/ski/version2
-rw-r--r--sys/boot/ia64/skiload/version2
4 files changed, 10 insertions, 10 deletions
diff --git a/sys/boot/ia64/libski/elf_freebsd.c b/sys/boot/ia64/libski/elf_freebsd.c
index ac8c886..6465d8a 100644
--- a/sys/boot/ia64/libski/elf_freebsd.c
+++ b/sys/boot/ia64/libski/elf_freebsd.c
@@ -129,7 +129,7 @@ struct ia64_pte {
};
void
-enter_kernel(const char* filename, u_int64_t start)
+enter_kernel(const char* filename, u_int64_t start, struct bootinfo *bi)
{
printf("Entering %s at 0x%lx...\n", filename, start);
@@ -145,6 +145,7 @@ enter_kernel(const char* filename, u_int64_t start)
| IA64_PSR_BN));
__asm __volatile("mov cr.iip=%0" :: "r"(start));
__asm __volatile("mov cr.ifs=r0;;");
+ __asm __volatile("mov r8=%0" :: "r" (bi));
__asm __volatile("rfi;;");
}
@@ -196,8 +197,5 @@ elf_exec(struct preloaded_file *fp)
:: "r"(0), "r"(*(u_int64_t*)&pte));
__asm __volatile("srlz.i;;");
- enter_kernel(fp->f_name, hdr->e_entry);
+ enter_kernel(fp->f_name, hdr->e_entry, bi);
}
-
-
-
diff --git a/sys/boot/ia64/ski/elf_freebsd.c b/sys/boot/ia64/ski/elf_freebsd.c
index ac8c886..6465d8a 100644
--- a/sys/boot/ia64/ski/elf_freebsd.c
+++ b/sys/boot/ia64/ski/elf_freebsd.c
@@ -129,7 +129,7 @@ struct ia64_pte {
};
void
-enter_kernel(const char* filename, u_int64_t start)
+enter_kernel(const char* filename, u_int64_t start, struct bootinfo *bi)
{
printf("Entering %s at 0x%lx...\n", filename, start);
@@ -145,6 +145,7 @@ enter_kernel(const char* filename, u_int64_t start)
| IA64_PSR_BN));
__asm __volatile("mov cr.iip=%0" :: "r"(start));
__asm __volatile("mov cr.ifs=r0;;");
+ __asm __volatile("mov r8=%0" :: "r" (bi));
__asm __volatile("rfi;;");
}
@@ -196,8 +197,5 @@ elf_exec(struct preloaded_file *fp)
:: "r"(0), "r"(*(u_int64_t*)&pte));
__asm __volatile("srlz.i;;");
- enter_kernel(fp->f_name, hdr->e_entry);
+ enter_kernel(fp->f_name, hdr->e_entry, bi);
}
-
-
-
diff --git a/sys/boot/ia64/ski/version b/sys/boot/ia64/ski/version
index b87ca50..6f4fc3c 100644
--- a/sys/boot/ia64/ski/version
+++ b/sys/boot/ia64/ski/version
@@ -3,4 +3,6 @@ $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.2: Pass the address of the bootinfo block to the kernel in register
+ r8. Keep it at the hardwired address for now.
0.1: Initial SKI version.
diff --git a/sys/boot/ia64/skiload/version b/sys/boot/ia64/skiload/version
index b87ca50..6f4fc3c 100644
--- a/sys/boot/ia64/skiload/version
+++ b/sys/boot/ia64/skiload/version
@@ -3,4 +3,6 @@ $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.2: Pass the address of the bootinfo block to the kernel in register
+ r8. Keep it at the hardwired address for now.
0.1: Initial SKI version.
OpenPOWER on IntegriCloud