aboutsummaryrefslogtreecommitdiff
path: root/board-qemu
diff options
context:
space:
mode:
authorJordan Niethe <jniethe5@gmail.com>2022-07-12 10:46:24 +1000
committerAlexey Kardashevskiy <aik@ozlabs.ru>2022-07-19 12:54:08 +1000
commitb3f699c06ac03909d4af11806f3450092cde60ee (patch)
tree231cb5c023145802d31a5b9c0c2900e834a9f549 /board-qemu
parent5b4c5acdcd552a4e1796aeca6bb700f6cbb0282d (diff)
downloadSLOF-b3f699c06ac03909d4af11806f3450092cde60ee.zip
SLOF-b3f699c06ac03909d4af11806f3450092cde60ee.tar.gz
SLOF-b3f699c06ac03909d4af11806f3450092cde60ee.tar.bz2
OF: Add a separate direct kernel loading word
Currently, go-64 is used for booting a kernel from qemu (i.e. -kernel). However, there is an expectation from users that this should be able to boot not just vmlinux kernels but things like Zimages too. The bootwrapper of a BE zImage is a 32-bit ELF. Attempting to load that with go-64 means that it will be ran with MSR_SF set (64-bit mode). This crashes early in boot (usually due to what should be 32-bit operations being done with 64-bit registers eventually leading to an incorrect address being generated and branched to). Note that our 64-bit payloads are prepared to enter with MSR_SF cleared and set it themselves very early. Add a new word named go-direct that will execute any simple payload in-place and will enter with MSR_SF cleared. This allows booting a BE zImage from qemu with -machine kernel-addr=0. Signed-off-by: Jordan Niethe <jniethe5@gmail.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Diffstat (limited to 'board-qemu')
-rw-r--r--board-qemu/slof/OF.fs5
1 files changed, 2 insertions, 3 deletions
diff --git a/board-qemu/slof/OF.fs b/board-qemu/slof/OF.fs
index f0fc9c6..3bcb2af 100644
--- a/board-qemu/slof/OF.fs
+++ b/board-qemu/slof/OF.fs
@@ -303,10 +303,9 @@ set-default-console
: (boot-ram)
direct-ram-boot-size 0<> IF
." Booting from memory..." cr
- s" go-args 2@ " evaluate
- direct-ram-boot-base 0
+ s" direct-ram-boot-base to go-entry" evaluate
s" true state-valid ! " evaluate
- s" disable-watchdog go-64" evaluate
+ s" disable-watchdog go-direct" evaluate
THEN
;