[PATCH v2] x86: cpu: Fix crash on FTRACE enabled builds
Patrick Rudolph
patrick.rudolph at 9elements.com
Mon Dec 15 09:16:39 CET 2025
When compiled with FTRACE=1 U-boot will crash as %rdi is clobbered
in board_init_f_alloc_reserve() and board_init_f_init_reserve() will
memset the .text segment instead of the global_data struct.
According to the System V AMD64 ABI %rdi is not preserved and the
existing code only worked as board_init_f_alloc_reserve() was small
enough to not use %rdi.
Fix that by always passing the correct argument to
board_init_f_init_reserve().
TEST=Can boot on qemu-q35 with FTRACE=1 enabled during build.
Signed-off-by: Patrick Rudolph <patrick.rudolph at 9elements.com>
---
Changes in v2:
- Point %rd to bottom of global_data struct instead of top
---
arch/x86/cpu/start64.S | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/x86/cpu/start64.S b/arch/x86/cpu/start64.S
index 78e894d2a21..968a2929d0b 100644
--- a/arch/x86/cpu/start64.S
+++ b/arch/x86/cpu/start64.S
@@ -16,7 +16,9 @@ _start:
/* Set up memory using the existing stack */
mov %rsp, %rdi
call board_init_f_alloc_reserve
+
mov %rax, %rsp
+ mov %rsp, %rdi
call board_init_f_init_reserve
--
2.52.0
More information about the U-Boot
mailing list