[all-commits] [llvm/llvm-project] 9f95bc: [clang][ARM] relax -mtp=cp15 for non-thumb cases
Nick Desaulniers via All-commits
all-commits at lists.llvm.org
Fri Dec 3 14:21:42 PST 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 9f95bc7dc18390199553cf2ea3bfcdc6a95717ef
https://github.com/llvm/llvm-project/commit/9f95bc7dc18390199553cf2ea3bfcdc6a95717ef
Author: Nick Desaulniers <ndesaulniers at google.com>
Date: 2021-12-03 (Fri, 03 Dec 2021)
Changed paths:
M clang/lib/Driver/ToolChains/Arch/ARM.cpp
M clang/lib/Driver/ToolChains/Arch/ARM.h
M clang/test/Driver/clang-translation.c
Log Message:
-----------
[clang][ARM] relax -mtp=cp15 for non-thumb cases
Building -march=armv6k Linux kernels with -mtp=cp15 fails to
compile:
error: hardware TLS register is not supported for the arm
sub-architecture
@ardb found docs for ARM1176JZF-S (ARMv6K) that reference hard thread
pointer.
Relax our ARMv6 check for cases where we're targeting ARM via -marm (vs
Thumb1 via -mthumb). This more closely matches the KConfig requirements
for where we plan to use these (ie. ARMv6K, ARMv7 (arm or thumb2)).
As @peter.smith mentions:
on armv5 we can write the instruction to read/write to CP15 C13 with
the ThreadID opcode. However on no armv5 implementation will the CP15
C13 have a Thread ID register. The GCC intent seems to be whether the
instruction is encodable rather than check what the CPU supports.
Link: https://github.com/ClangBuiltLinux/linux/issues/1502
Link: https://developer.arm.com/documentation/ddi0301/h/system-control-coprocessor/system-control-processor-registers/c13--thread-and-process-id-registers
Reviewed By: ardb, peter.smith
Differential Revision: https://reviews.llvm.org/D114116
More information about the All-commits
mailing list