src/arch/ppc64/*: pass FDT address to payload

It's available in %r3 in bootblock and needs to be passed to payload in
%r27.  We use one of two hypervisor's special registers as a buffer,
which aren't used for anything by the code.

Change-Id: I0911f4b534c6f8cacfa057a5bad7576fec711637
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/57084
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Reviewed-by: Krystian Hebel <krystian.hebel@3mdeb.com>
This commit is contained in:
Sergii Dmytruk
2021-08-21 16:24:02 +03:00
committed by Felix Held
parent dba9b54731
commit 3a96074441
4 changed files with 32 additions and 0 deletions

View File

@@ -3,6 +3,8 @@
* Early initialization code for POWER8/POWER9.
*/
#include <cpu/power/spr.h>
#define FIXUP_ENDIAN \
tdi 0,0,0x48; /* Reverse endian of b . + 8 */ \
b $+44; /* Skip trampoline if endian is good */ \
@@ -35,6 +37,10 @@ _start:
nop
FIXUP_ENDIAN
/* Store FDT address provided by QEMU in %r3 to pass it later to
* payload */
mtspr SPR_HSPRG0, %r3
/* Set program priority to medium */
or %r2, %r2, %r2