On 03.10.24 17:22, Jerome Forissier wrote:
Note: Patch posted separately [0].

[0] 
https://patchwork.ozlabs.org/project/uboot/patch/20241003142030.1610222-1-jerome.foriss...@linaro.org/

CPU_MIPS64 needs 8-byte alignment on the linker lists, otherwise an
exception may occur. Fixes an issue found on malta64 with QEMU:

  Breakpoint 1, lists_driver_lookup_name (name=0xffffffffbe043578 
"root_driver") at /home/uboot/u-boot/drivers/core/lists.c:31
  31                      if (!strcmp(name, entry->name))
  [...]
  ld      a1,0(s0)

  (gdb) p/x &entry->name
  0xffffffffbe04b0d4
  (gdb) p/x $s0
  0xffffffffbe04b0d4

  $ grep __u_boot_list /tmp/malta64/u-boot.objdump
  4 __u_boot_list 000018e0  ffffffffbe04a4d4  ffffffffbe04a4d4  0004a584  2**2

Signed-off-by: Jerome Forissier <jerome.foriss...@linaro.org>
---
  arch/Kconfig | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/Kconfig b/arch/Kconfig
index 8f1f4667012..8f4df849801 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -45,7 +45,7 @@ config SYS_CACHELINE_SIZE
  config LINKER_LIST_ALIGN
        int
        default 32 if SANDBOX
-       default 8 if ARM64 || X86
+       default 8 if ARM64 || X86 || CPU_MIPS64

Shouldn't we set 8 byte alignment on all 64bit architectures including
riscv64?

    default 8 if 64BIT

@Simon
I would not know why 32bit X86 should need 8 byte alignment.
I am a bit astonished that you chose 32 byte alignment for the Sandbox.
Is there any justification to use more than 4 on the 32bit Sandbox and
more than 8 on the 64bit Sandbox? If yes, we should document it via a
comment.

Best regards

Heinrich

        default 4
        help
          Force the each linker list to be aligned to this boundary. This

Reply via email to