[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