u-boot/arch/arm/lib
Benoît Thébaudeau 58f9e1ae63 arm: Make reset position-independent
Some boards, like mx31pdk and tx25, require the beginning of the SPL
code to be position-independent. For these two boards, this is because
they use the i.MX external NAND boot, which starts by executing the
first NAND Flash page from the NFC page buffer. The SPL then needs to
copy itself to its actual link address in order to free the NFC page
buffer and use it to load the non-SPL image from Flash before running
it. This means that the SPL runtime address differs from its link
address between the reset and the initial copy performed by
board_init_f(), so this part of the SPL binary must be
position-independent.

This requirement was broken by commit 41623c9 'arm: move exception
handling out of start.S files', which used an absolute address to branch
to the reset routine. This new commit restores the original behavior,
which just performed a relative branch. This fixes the boot of mx31pdk
and tx25.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
Reported-by: Helmut Raiger <helmut.raiger@hale.at>
Cc: Albert Aribaud <albert.u.boot@aribaud.net>
Cc: Magnus Lilja <lilja.magnus@gmail.com>
Cc: John Rigby <jcrigby@gmail.com>
Tested-by: Magnus Lilja <lilja.magnus@gmail.com>
2014-09-11 18:04:34 +02:00
..
_ashldi3.S Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
_ashrdi3.S Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
_divsi3.S cosmetic: remove empty lines at the top of file 2013-11-08 09:41:37 -05:00
_lshrdi3.S Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
_modsi3.S cosmetic: remove empty lines at the top of file 2013-11-08 09:41:37 -05:00
_udivsi3.S Move lib_$ARCH directories to arch/$ARCH/lib 2010-04-13 09:13:03 +02:00
_umodsi3.S Move lib_$ARCH directories to arch/$ARCH/lib 2010-04-13 09:13:03 +02:00
asm-offsets.c kbuild: move asm-offsets.c from SoC directory to arch/$(ARCH)/lib 2014-03-28 15:06:29 -04:00
board.c arm: fdt_control: fix a build error with CONFIG_OF_EMBED=y 2014-06-05 14:38:38 -04:00
bootm-fdt.c ARM: HYP/non-sec/PSCI: emit DT nodes 2014-07-28 17:19:52 +02:00
bootm.c arm64: Correct passing of Linux kernel args 2014-08-30 07:46:40 -04:00
cache-cp15.c ARM: Fix overflow in MMU setup 2014-08-30 07:46:39 -04:00
cache-pl310.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
cache.c ARM: cache_v7: use __weak 2014-07-04 19:57:22 +02:00
crt0.S arm: Support pre-relocation malloc() 2014-08-04 05:24:35 -06:00
crt0_64.S arm64: core support 2014-01-09 16:08:44 +01:00
div0.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
eabi_compat.c eabi_compat: add __aeabi_memcpy __aeabi_memset 2014-09-09 13:51:11 +02:00
gic_64.S arm64 patch: gicv3 support 2014-04-08 00:15:12 +02:00
interrupts.c ARM: add missing HYP mode constant 2014-07-28 17:06:35 +02:00
interrupts_64.c arm64: core support 2014-01-09 16:08:44 +01:00
Makefile arm: Add support for semihosting for armv8 fastmodel targets. 2014-07-03 08:35:45 +02:00
memcpy.S arm: lib: memcpy: Do not copy to same address 2011-09-03 22:40:45 +02:00
memset.S arm: Use optimized memcpy and memset from linux 2011-04-27 19:38:07 +02:00
relocate.S Coding Style cleanup: replace leading SPACEs by TABs 2013-10-14 16:06:54 -04:00
relocate_64.S armv8/cache: Flush D-cache, invalidate I-cache for relocation 2014-04-07 17:43:36 +02:00
reset.c arm:reset: call the reset_misc() before the cpu reset 2014-09-05 13:58:49 +09:00
sections.c ARM: HYP/non-sec: add separate section for secure code 2014-07-28 17:07:23 +02:00
semihosting.c arm: Add support for semihosting for armv8 fastmodel targets. 2014-07-03 08:35:45 +02:00
spl.c ARM: SPL: do not set gd again 2014-09-09 13:50:57 +02:00
vectors.S arm: Make reset position-independent 2014-09-11 18:04:34 +02:00