[PATCH] arm: ARMv4 assembly compatibility

Ralph Siemsen ralph.siemsen at linaro.org
Tue Aug 16 19:51:59 CEST 2022


On Tue, Aug 16, 2022 at 12:17 PM Andre Przywara <andre.przywara at 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 at 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


More information about the U-Boot mailing list