diff options
author | marcel <marcel@FreeBSD.org> | 2011-05-28 04:10:44 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2011-05-28 04:10:44 +0000 |
commit | 4937594467d6072b2bb22d2bd2b3dccaba83b140 (patch) | |
tree | 253c835cd38d339f3e7ec9f7d2cd30b491c383da /sys/powerpc/booke/pmap.c | |
parent | ced7835c06b507528a27a1ef54de7f2533a2200c (diff) | |
download | FreeBSD-src-4937594467d6072b2bb22d2bd2b3dccaba83b140.zip FreeBSD-src-4937594467d6072b2bb22d2bd2b3dccaba83b140.tar.gz |
Better support different kernel hand-offs. When loaded directly
from U-Boot, the kernel is passed a standard argc/argv pair.
The Juniper loader passes the metadata pointer as the second
argument and passes 0 in the first. The FreeBSD loader passes
the metadata pointer in the first argument.
As such, have locore preserve the first 2 arguments in registers
r30 & r31. Change e500_init() to accept these arguments. Don't
pass global offsets (i.e. kernel_text and _end) as arguments to
e500_init(). We can reference those directly.
Rename e500_init() to booke_init() now that we're changing the
prototype.
In booke_init(), "decode" arg1 and arg2 to obtain the metadata
pointer correctly. For the U-Boot case, clear SBSS and BSS and
bank on having a static FDT for now. This allows loading the
ELF kernel and jumping to the entry point without trampoline.
Diffstat (limited to 'sys/powerpc/booke/pmap.c')
-rw-r--r-- | sys/powerpc/booke/pmap.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/powerpc/booke/pmap.c b/sys/powerpc/booke/pmap.c index 4a279af..aff7901 100644 --- a/sys/powerpc/booke/pmap.c +++ b/sys/powerpc/booke/pmap.c @@ -943,7 +943,7 @@ pte_find(mmu_t mmu, pmap_t pmap, vm_offset_t va) /**************************************************************************/ /* - * This is called during e500_init, before the system is really initialized. + * This is called during booke_init, before the system is really initialized. */ static void mmu_booke_bootstrap(mmu_t mmu, vm_offset_t start, vm_offset_t kernelend) |