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/boot/forth/menu-commands.4th | |
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/boot/forth/menu-commands.4th')
0 files changed, 0 insertions, 0 deletions