summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Murzin <vladimir.murzin@arm.com>2022-07-18 12:57:24 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2022-07-20 11:47:17 +0200
commit01961b12bc71d6eb4d9bda3632d73bb6764b8e85 (patch)
tree621ddba67fecbb149e1b5186bbd9baab78986432
parenta13b4d8aabe9b525fa280f4a240e89d991d7f106 (diff)
linuxthread/arm: Unlock ldrex/strex varsion of testandset for __ARM_ARCH >= 7
Thomas has repored failure building ARM 32-bit systems for ARMv8 cores CC libpthread/linuxthreads/mutex.os /tmp/ccn8SFKU.s: Assembler messages: /tmp/ccn8SFKU.s:162: Error: swp{b} use is obsoleted for ARMv8 and later /tmp/ccn8SFKU.s:186: Error: swp{b} use is obsoleted for ARMv8 and later /tmp/ccn8SFKU.s:203: Error: swp{b} use is obsoleted for ARMv8 and later /tmp/ccn8SFKU.s:224: Error: swp{b} use is obsoleted for ARMv8 and later make[1]: *** [Makerules:369: libpthread/linuxthreads/mutex.os] Error 1 This is due to libpthread/linuxthreads/sysdeps/arm/pt-machine.h which uses the swp instruction that is not allowed on ARMv8. All __ARM_ARCH >= 7 support ldrex/strex instructions, so unlock testandset() varaint for them. Reported-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
-rw-r--r--libpthread/linuxthreads/sysdeps/arm/pt-machine.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/libpthread/linuxthreads/sysdeps/arm/pt-machine.h b/libpthread/linuxthreads/sysdeps/arm/pt-machine.h
index b00b10495..3250961cf 100644
--- a/libpthread/linuxthreads/sysdeps/arm/pt-machine.h
+++ b/libpthread/linuxthreads/sysdeps/arm/pt-machine.h
@@ -28,7 +28,7 @@
# define PT_EI __extern_always_inline
#endif
-#if defined(__thumb2__)
+#if __ARM_ARCH >= 7 || defined(__thumb2__)
/* Spinlock implementation; required. */
PT_EI long int
testandset (int *spinlock)