
Hi Michal,
I will remove "#if IS_ENABLED(CONFIG_OF_BOARD)" from below:
+#if IS_ENABLED(CONFIG_OF_BOARD) +/* Boot parameters saved from lowlevel_init.S */ +struct {
- unsigned long arg0;
- unsigned long arg1;
- unsigned long arg2;
- unsigned long arg3;
+} qemu_saved_args __section(".data"); +#endif
Saving the args does not really dependent on OF_BOARD or BLOBLIST
Thanks and regards, Raymond
On Mon, 4 Dec 2023 at 02:54, Michal Simek michal.simek@amd.com wrote:
On 11/27/23 20:50, Raymond Mao wrote:
Add platform custom function to get bloblist from boot arguments. Check whether boot arguments aligns with the register conventions defined in FW Handoff spec v0.9. Add bloblist related options into qemu default config.
Signed-off-by: Raymond Mao raymond.mao@linaro.org
Changes in v2
New patch file created for v2.
board/emulation/qemu-arm/Makefile | 1 + board/emulation/qemu-arm/lowlevel_init.S | 19 +++++++++ board/emulation/qemu-arm/qemu-arm.c | 54 ++++++++++++++++++++++++ configs/qemu_arm64_defconfig | 3 ++ configs/qemu_arm_defconfig | 3 ++ 5 files changed, 80 insertions(+) create mode 100644 board/emulation/qemu-arm/lowlevel_init.S
diff --git a/board/emulation/qemu-arm/Makefile
b/board/emulation/qemu-arm/Makefile
index a22d1237ff..12821e7083 100644 --- a/board/emulation/qemu-arm/Makefile +++ b/board/emulation/qemu-arm/Makefile @@ -1,3 +1,4 @@ # SPDX-License-Identifier: GPL-2.0+
obj-y += qemu-arm.o +obj-$(CONFIG_OF_BOARD) += lowlevel_init.o diff --git a/board/emulation/qemu-arm/lowlevel_init.S
b/board/emulation/qemu-arm/lowlevel_init.S
new file mode 100644 index 0000000000..d72d7c938a --- /dev/null +++ b/board/emulation/qemu-arm/lowlevel_init.S @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ +/*
- Copyright (c) 2023, Linaro Limited
- */
+#include <config.h>
+.global save_boot_params +save_boot_params: +#ifdef CONFIG_ARM64
adr x9, qemu_saved_args
Based on logic below this is available only when CONFIG_OF_BOARD is enabled. Please look below.
stp x0, x1, [x9]
/* Increment the address by 16 bytes for the next pair of values */
stp x2, x3, [x9, #16]
+#else
ldr r12, =qemu_saved_args
stm r12, {r0, r1, r2, r3}
+#endif
b save_boot_params_ret
diff --git a/board/emulation/qemu-arm/qemu-arm.c
b/board/emulation/qemu-arm/qemu-arm.c
index 942f1fff57..a3892630d8 100644 --- a/board/emulation/qemu-arm/qemu-arm.c +++ b/board/emulation/qemu-arm/qemu-arm.c @@ -4,6 +4,9 @@ */
#include <common.h> +#if IS_ENABLED(CONFIG_OF_BOARD) && IS_ENABLED(CONFIG_BLOBLIST) +#include <bloblist.h> +#endif
you have dependency on OF_BOARD and BLOBLIST.
#include <cpu_func.h> #include <dm.h> #include <efi.h> @@ -102,6 +105,16 @@ static struct mm_region qemu_arm64_mem_map[] = { struct mm_region *mem_map = qemu_arm64_mem_map; #endif
+#if IS_ENABLED(CONFIG_OF_BOARD)
And here OF_BOARD.
Not all should be aligned but I don't think current #if
Thanks, Michal