summaryrefslogtreecommitdiff
path: root/arch/arm/kernel/vmlinux.lds.S
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2021-10-18 15:30:07 +0100
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>2021-10-25 13:12:33 +0100
commit8b5bd5adf9e6d073e538e2e9de810f2f25379c3b (patch)
treee267640f488fd8625aaea7af26042b34f6068ee4 /arch/arm/kernel/vmlinux.lds.S
parent345dac33f58894a56d17b92a41be10e16585ceff (diff)
ARM: 9137/1: disallow CONFIG_THUMB with ARMv4
We can currently build a multi-cpu enabled kernel that allows both ARMv4 and ARMv5 CPUs, and also supports THUMB mode in user space. However, returning to user space in this configuration with the usr_ret macro requires the use of the 'bx' instruction, which is refused by the assembler: arch/arm/kernel/entry-armv.S: Assembler messages: arch/arm/kernel/entry-armv.S:937: Error: selected processor does not support `bx lr' in ARM mode arch/arm/kernel/entry-armv.S:960: Error: selected processor does not support `bx lr' in ARM mode arch/arm/kernel/entry-armv.S:1003: Error: selected processor does not support `bx lr' in ARM mode <instantiation>:2:2: note: instruction requires: armv4t bx lr While it would be possible to handle this correctly in principle, doing so seems to not be worth it, if we can simply avoid the problem by enforcing that a kernel supporting both ARMv4 and a later CPU architecture cannot run THUMB binaries. This turned up while build-testing with clang; for some reason, gcc never triggered the problem. Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Diffstat (limited to 'arch/arm/kernel/vmlinux.lds.S')
0 files changed, 0 insertions, 0 deletions