u-boot/arch/arm/lib
Sergei Antonov 583f1b2f10 arm: ARMv4 assembly compatibility
There is currently a problem that U-Boot can not work on ARMv4
because assembly imlementations of memcpy() and some other functions
use "bx lr" instruction that is not available on ARMv4 ("mov pc, lr"
should be used instead).

A working preprocessor-based solution to this problem is found in
arch/arm/lib/relocate.S. Move it to the "ret" macro in
arch/arm/include/asm/assembler.h and change all "bx lr" code
to "ret lr" in functions that may run on ARMv4. Linux source code
deals with this problem in the same manner.

v1 -> v2:
Comment update. Pointed out by Andre Przywara.

Signed-off-by: Sergei Antonov <saproj@gmail.com>
CC: Samuel Holland <samuel@sholland.org>
CC: Ye Li <ye.li@nxp.com>
CC: Simon Glass <sjg@chromium.org>
CC: Andre Przywara <andre.przywara@arm.com>
CC: Marek Vasut <marex@denx.de>
CC: Sean Anderson <sean.anderson@seco.com>
CC: Tom Rini <trini@konsulko.com>
2022-09-02 13:40:42 -04:00
..
ashldi3.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
ashrdi3.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
asm-offsets.c arm: Remove zmx25 board and ARCH_MX25 2021-10-01 21:08:18 -04:00
asmdefs.h arm64: arch/arm/lib: Add optimized memset/memcpy/memmove functions 2021-09-24 07:48:06 -04:00
bdinfo.c Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
bootm-fdt.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
bootm.c zynqmp: Run board_get_usable_ram_top() only on main U-Boot 2022-07-26 08:23:54 +02:00
cache-cp15.c arch: cache: cp15: Add mmu_set_region_dcache_behaviour() when SYS_DCACHE_OFF is enable 2021-07-09 11:36:12 -04:00
cache-pl310.c ARM: cache: Fix incorrect bitwise operation 2019-02-28 14:21:46 -05:00
cache.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
ccn504.S WS cleanup: remove SPACE(s) followed by TAB 2021-09-30 09:08:16 -04:00
cmd_boot.c command: Remove the cmd_tbl_t typedef 2020-05-18 18:36:55 -04:00
crt0.S Migrate CUSTOM_SYS_INIT_SP_ADDR to Kconfig using system-constants.h 2022-06-06 12:09:19 -04:00
crt0_64.S Migrate CUSTOM_SYS_INIT_SP_ADDR to Kconfig using system-constants.h 2022-06-06 12:09:19 -04:00
crt0_aarch64_efi.S efi_loader: fix SectionAlignment, FileAlignment 2022-01-15 10:57:22 +01:00
crt0_arm_efi.S efi_loader: fix SectionAlignment, FileAlignment 2022-01-15 10:57:22 +01:00
debug.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
div0.c common: Move hang() to the same header as panic() 2020-01-17 17:53:40 -05:00
div64.S WS cleanup: remove SPACE(s) followed by TAB 2021-09-30 09:08:16 -04:00
eabi_compat.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
elf_aarch64_efi.lds efi_loader: fix SectionAlignment, FileAlignment 2022-01-15 10:57:22 +01:00
elf_arm_efi.lds efi_loader: fix SectionAlignment, FileAlignment 2022-01-15 10:57:22 +01:00
gic-v3-its.c Revert "arch: arm: use dt and UCLASS_SYSCON to get gic lpi details" 2021-10-31 08:46:29 -04:00
gic_64.S arm: gic_v2: Skip gic_init_secure when cpu is not in el3 2022-05-23 09:33:10 -04:00
image.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
interrupts.c reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
interrupts_64.c arm64: Catch non-emulated semihosting calls 2022-04-01 16:56:53 -04:00
interrupts_m.c reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
lib1funcs.S arm: ARMv4 assembly compatibility 2022-09-02 13:40:42 -04:00
lshrdi3.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
Makefile ARM: cache: Allow SPL to build cache-pl310.c 2022-09-01 17:18:42 -04:00
memcpy-arm64.S arm64: arch/arm/lib: Add optimized memset/memcpy/memmove functions 2021-09-24 07:48:06 -04:00
memcpy.S arm: ARMv4 assembly compatibility 2022-09-02 13:40:42 -04:00
memset-arm64.S arm64: memset-arm64: Use simple memset when cache is disabled 2021-09-24 07:48:06 -04:00
memset.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
muldi3.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
psci-dt.c treewide: use CONFIG_IS_ENABLED() for ARMV8_SEC_FIRMWARE_SUPPORT 2020-12-04 16:09:05 -05:00
reloc_aarch64_efi.c arm: Remove unused _relocate arguments 2018-07-19 16:31:36 -04:00
reloc_arm_efi.c arm: Remove unused _relocate arguments 2018-07-19 16:31:36 -04:00
relocate.S arm: ARMv4 assembly compatibility 2022-09-02 13:40:42 -04:00
relocate_64.S common: Move relocate_code() to init.h 2020-01-17 13:26:49 -05:00
reset.c reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
save_prev_bl_data.c arm: init: save previous bootloader data 2022-04-04 14:53:26 -04:00
sections.c treewide: Convert macro and uses of __section(foo) to __section("foo") 2021-05-24 14:21:30 -04:00
semihosting.c arm: smh: Add option to detect semihosting 2022-04-01 16:56:53 -04:00
setjmp.S arm: ARMv4 assembly compatibility 2022-09-02 13:40:42 -04:00
setjmp_aarch64.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
spl.c spl: Make use of CONFIG_IS_ENABLED(OS_BOOT) in SPL/TPL common code paths 2021-11-05 11:23:29 -04:00
stack.c lmb: arm: Increase LMB alignment to 16k in arch_lmb_reserve_generic() 2021-09-23 14:15:32 -04:00
uldivmod.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
vectors.S arm: Do not compile vector table when SYS_NO_VECTOR_TABLE is enabled 2022-04-21 12:31:36 +02:00
vectors_m.S Migrate CUSTOM_SYS_INIT_SP_ADDR to Kconfig using system-constants.h 2022-06-06 12:09:19 -04:00
zimage.c arm: zimage: Use correct symbol to hide messages in SPL 2021-04-27 08:05:30 -04:00