u-boot/arch/arm/cpu/armv8
Sam Protsenko 1070f01ac1 armv8: cpu: Implement allow_unaligned()
Usually ARMv8 platforms allow unaligned access for Normal memory. But
some chips might not allow it by default, having SCTLR.A bit set to 1
before U-Boot execution. One such example is Exynos850 SoC. As
allow_unaligned() is not implemented for ARMv8 at the moment, its __weak
implementation is used, which does nothing. That might lead to unaligned
access abort, for example when running EFI selftest. Fix that by
implementing allow_unaligned() for ARMv8.

The issue was found when running EFI selftest on E850-96 board
(Exynos850 based):

    => bootefi selftest $fdtcontroladdr

    ...
    Executing 'HII database protocols'
    "Synchronous Abort" handler, esr 0x96000021, far 0xbaac0991
    ...
    resetting ...

Unaligned abort happens in u16_strnlen(), which is called from
efi_hii_sibt_string_ucs2_block_next():

    u16_strlen(blk->string_text)

where 'blk' type is struct efi_hii_sibt_string_ucs2_block. Because this
struct is packed, doing "->string_text" makes 'blk' address incremented
by 1 byte, which makes it unaligned. Although allow_unaligned() was
called in efi_init_early() before EFI selftest execution, it wasn't
implemented for ARMv8 CPUs, so data abort happened.

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
2024-11-17 13:13:22 -06:00
..
bcmns3 board: ns3: add api to save boot parameters passed from BL31 2020-07-29 10:13:41 -04:00
fsl-layerscape layerscape: use the lmb API's to add RAM memory 2024-10-15 13:45:29 -06:00
hisilicon Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet" 2024-05-20 13:35:03 -06:00
xen WS cleanup: remove trailing empty lines 2021-09-30 08:08:56 -04:00
acpi_park_v8.S arm: cpu: Add ACPI parking protocol support 2024-10-27 17:24:13 -06:00
cache_v8.c armv8: Fix get_sctlr() return type 2024-11-17 13:13:22 -06:00
cache.S arm: Check FEAT_CCIDX when parsing ccsidr_el1 register 2024-03-19 18:40:47 -04:00
config.mk arm: Centralize fixed register logic 2023-04-25 15:31:27 -04:00
cpu-dt.c Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet" 2024-05-20 13:35:03 -06:00
cpu.c armv8: cpu: Implement allow_unaligned() 2024-11-17 13:13:22 -06:00
exception_level.c Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet" 2024-05-20 13:35:03 -06:00
exceptions.S arm64: Save spsr in pt_regs 2022-04-01 16:56:53 -04:00
fel_utils.S sunxi: refactor serial base addresses to avoid asm/arch/cpu.h 2023-10-22 23:41:52 +01:00
fwcall.c arm: psci: Fix RESET2 hook 2023-01-31 15:46:39 +01:00
generic_timer.c Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet" 2024-05-20 13:35:03 -06:00
Kconfig armv8: generic_timer: Use event stream for udelay 2024-05-13 16:51:14 -06:00
linux-kernel-image-header-vars.h config: Use CONFIG_SYS_BIG_ENDIAN in code whenever possible 2024-07-31 11:18:37 -06:00
Makefile Merge patch series "Implement ACPI on aarch64" 2024-10-27 18:44:13 -06:00
psci.S arm: psci: Fix RESET2 hook 2023-01-31 15:46:39 +01:00
sec_firmware_asm.S armv8: sec_firmware: change el2_to_aarch32 SMC ID 2018-12-06 14:37:19 -08:00
sec_firmware.c Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet" 2024-05-20 13:35:03 -06:00
sha1_ce_core.S armv8 SHA-1 using ARMv8 Crypto Extensions: 2022-06-27 13:36:28 -04:00
sha1_ce_glue.c Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet" 2024-05-20 13:35:03 -06:00
sha256_ce_core.S armv8 SHA-256 using ARMv8 Crypto Extensions 2022-06-27 13:36:28 -04:00
sha256_ce_glue.c Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet" 2024-05-20 13:35:03 -06:00
smccc-call.S arm64: smccc: add support for SMCCCv1.2 x0-x17 registers 2023-08-08 10:22:03 -04:00
spin_table_v8.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
spin_table.c Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet" 2024-05-20 13:35:03 -06:00
spl_data.c Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet" 2024-05-20 13:35:03 -06:00
start.S Merge patch series "Implement ACPI on aarch64" 2024-10-27 18:44:13 -06:00
tlb.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
transition.S armv8: Disable pointer authentication traps for EL1 2021-09-02 10:17:45 -04:00
u-boot-spl.lds armv8: Support not having separate BSS 2024-10-03 11:52:16 -06:00
u-boot.lds arm: remove redundant section alignments 2024-03-29 10:39:25 -04:00