forked from Mirrors/opensbi
blob: payload: Add FW_PAYLOAD_FDT_PATH option
This patch extends fw_payload blob to provide FW_PAYLOAD_FDT_PATH option using which we can embed custom FDT in .text section of fw_payload blob. In other words, FW_PAYLOAD_FDT_PATH is an option to forcefully override FDT passed by previous booting stage in a1 register. Signed-off-by: Anup Patel <anup.patel@wdc.com>
This commit is contained in:
@@ -9,13 +9,24 @@
|
||||
|
||||
#include "fw_common.S"
|
||||
|
||||
.align 3
|
||||
.section .entry, "ax", %progbits
|
||||
.global fw_prev_arg1
|
||||
fw_prev_arg1:
|
||||
/* We return previous arg1 in 'a0' */
|
||||
#ifdef FW_PAYLOAD_FDT_PATH
|
||||
la a0, fdt_bin
|
||||
#else
|
||||
add a0, zero, zero
|
||||
#endif
|
||||
ret
|
||||
|
||||
.align 3
|
||||
.section .entry, "ax", %progbits
|
||||
.global fw_next_arg1
|
||||
fw_next_arg1:
|
||||
/* We return FDT destination address in 'a0' */
|
||||
/* We return next arg1 in 'a0' */
|
||||
#ifdef FW_PAYLOAD_FDT_ADDR
|
||||
/* a0 = destination FDT start address */
|
||||
li a0, FW_PAYLOAD_FDT_ADDR
|
||||
#else
|
||||
add a0, zero, zero
|
||||
@@ -33,8 +44,16 @@ fw_next_addr:
|
||||
#define str(s) #s
|
||||
#define stringify(s) str(s)
|
||||
|
||||
#ifdef FW_PAYLOAD_FDT_PATH
|
||||
.align 3
|
||||
.section .text, "ax", %progbits
|
||||
.globl fdt_bin
|
||||
fdt_bin:
|
||||
.incbin stringify(FW_PAYLOAD_FDT_PATH)
|
||||
#endif
|
||||
|
||||
.section .payload, "ax", %progbits
|
||||
.globl payload_bin
|
||||
.globl payload_bin
|
||||
payload_bin:
|
||||
#ifndef FW_PAYLOAD_PATH
|
||||
wfi
|
||||
|
Reference in New Issue
Block a user