
On Tue, Aug 16, 2022 at 12:17 PM Andre Przywara andre.przywara@arm.com wrote:
So what is the story here? This commit seems to suggest U-Boot doesn't support even ARMv5 without "T", has this changed? There are probably other code places which would need adjustment to run on ARMv4?
Note that gcc 6.0 and later considers armv4 (non-Thumb) support to be deprecated. [1] [2]
[1] https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html [2] https://lkml.iu.edu/hypermail/linux/kernel/1712.2/05158.html
On Wed, 10 Aug 2022 12:04:46 +0300 Sergei Antonov saproj@gmail.com wrote:
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.
Just wanted to point out another option: the linker has a --fix-v4bx flat, which performs the same conversion of "bx lr" to "mov pc lr". Although it is kind of an unusual place for such a transformation, it has the advantage that one does not need to fixup the source code of every piece of code you might like to compile. I used this some years ago [3], and it seems it still works in 2020 [4]
[3] http://lists.infradead.org/pipermail/netwinder/2017-August/000267.html [4] https://lists.gnu.org/archive/html/bug-binutils/2020-02/msg00174.html
Ralph