diff options
| author | Patrick Rudolph <[email protected]> | 2025-12-15 09:16:39 +0100 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2026-02-03 12:51:43 -0600 |
| commit | a8d982e1f1726254ef27bbdf362f98954ee3feb7 (patch) | |
| tree | 8d0d090bca716429a02da4b4cb4a11f54612fc35 /arch | |
| parent | 0cb8a88e7ab7824b7dc857fb6572705f3e19c456 (diff) | |
x86: cpu: Fix crash on FTRACE enabled builds
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 <[email protected]>
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/x86/cpu/start64.S | 2 |
1 files changed, 2 insertions, 0 deletions
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 |
