Message ID | 20240519-aarch64-be-v1-0-75cc328eddfa@flygoat.com |
---|---|
Headers | show |
Series | Arm64 big endian enablement | expand |
Hi Jiaxun, On Sun, 19 May 2024 at 15:56, Jiaxun Yang <jiaxun.yang@flygoat.com> wrote: > > Hi all, Apologies for taking time to review, got a lot in my backlog > > 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. This is not a nak, but I dont see why we should have the extra maintenace burden if people don't use it. I'd like more feedback from the community on whether this is useful or not Cheers /Ilias > > Please review. > > Thanks > > Signed-off-by: Jiaxun Yang <jiaxun.yang@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@flygoat.com> >
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@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,