[PATCH 00/13] Arm64 big endian enablement

Jiaxun Yang jiaxun.yang at flygoat.com
Sun May 19 14:56:45 CEST 2024


Hi all,

This series enabled big endian support for arm64, enabled qemu-arm
board for arm64be and slightly adjusted our Kconfig handling on endianness.

In practical I think most Arm SoCs do support little endian only,
for those SoCs with big endian support they are usually bi-endian
and expected bootloader in little endian. The only big-endian only
Arm SoC I know is a network processor from ZTE ZXIC, I doubt if upstream
U-Boot will ever support it.

However enabling arm64be can enable us to take more care on big endian
targets, given that arm64 is the most feature rich arch in U-Boot,
we can run more test on big endian systems.

Boot tested on qemu.

Please review.

Thanks

Signed-off-by: Jiaxun Yang <jiaxun.yang at flygoat.com>
---
Jiaxun Yang (13):
      tools/relocate-rela: Fix Big Endian elf64 handling
      arm: Don't select ARM_ASM_UNIFIED on arm64
      arm: Fix assembler.h for arm64
      arm: Introduce CPU_LE/CPU_BE macros
      arm: Define endian related bits in system.h
      armv8: Big Endian enablement for compiler and linker
      arm: Perform byte swap for read and write in io.h
      armv8: Allow endianness to be setted at reset entry
      armv8: spin_table: Perform byte swap for jump address
      lib/crc32: Don't perform byte swap for arm64 crc32b
      Kconfig: Unify endian support option
      config: Use CONFIG_SYS_BIG_ENDIAN in code whenever possible
      qemu-arm: Big endian enablement for arm64

 Makefile                                           |  2 +-
 arch/Kconfig                                       | 34 ++++++++---
 arch/arc/include/asm/arc-bcr.h                     | 10 +--
 arch/arm/Kconfig                                   |  3 +-
 arch/arm/config.mk                                 | 14 +++++
 arch/arm/cpu/armv8/Kconfig                         |  9 +++
 .../arm/cpu/armv8/linux-kernel-image-header-vars.h |  4 +-
 arch/arm/cpu/armv8/spin_table_v8.S                 |  2 +
 arch/arm/cpu/armv8/start.S                         | 26 ++++++++
 arch/arm/cpu/armv8/u-boot-spl.lds                  |  6 ++
 arch/arm/cpu/armv8/u-boot.lds                      |  4 ++
 arch/arm/include/asm/assembler.h                   | 25 ++++++++
 arch/arm/include/asm/io.h                          | 12 ++--
 arch/arm/include/asm/system.h                      |  3 +
 arch/arm/lib/elf_aarch64_efi.lds                   |  7 +++
 arch/mips/Kconfig                                  | 20 +++---
 arch/mips/mach-ath79/Kconfig                       |  8 +--
 arch/mips/mach-bmips/Kconfig                       | 20 +++---
 arch/mips/mach-jz47xx/Kconfig                      |  2 +-
 arch/mips/mach-mscc/Kconfig                        |  4 +-
 arch/mips/mach-pic32/Kconfig                       |  2 +-
 board/emulation/qemu-arm/Kconfig                   |  2 +
 board/emulation/qemu-arm/MAINTAINERS               |  1 +
 configs/qemu_arm64be_defconfig                     | 71 ++++++++++++++++++++++
 doc/board/emulation/qemu-arm.rst                   |  7 ++-
 drivers/mtd/nand/raw/brcmnand/brcmnand.c           |  2 +-
 lib/crc32.c                                        |  3 +-
 scripts/Makefile.build                             |  2 +-
 scripts/Makefile.lib                               |  3 +-
 tools/relocate-rela.c                              | 40 +++++++-----
 30 files changed, 271 insertions(+), 77 deletions(-)
---
base-commit: 3be9f399e911cfc437a37ac826441f1d96da1c9b
change-id: 20240518-aarch64-be-1ec99cf7f28b

Best regards,
-- 
Jiaxun Yang <jiaxun.yang at flygoat.com>



More information about the U-Boot mailing list