aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2019-09-25 21:48:41 +0000
committerRichard Henderson <rth@gcc.gnu.org>2019-09-25 14:48:41 -0700
commit88a51d68c4aaa61adb36a9cad6f25ef214bde853 (patch)
tree507f11146d1c716be08bc7c89a285061ca7cd93b
parent736a6efc4fd2159f0f6092d1767697ef16b51b3a (diff)
downloadgcc-88a51d68c4aaa61adb36a9cad6f25ef214bde853.zip
gcc-88a51d68c4aaa61adb36a9cad6f25ef214bde853.tar.gz
gcc-88a51d68c4aaa61adb36a9cad6f25ef214bde853.tar.bz2
aarch64: Fix store-exclusive in load-operate LSE helpers
PR target/91834 * config/aarch64/lse.S (LDNM): Ensure STXR output does not overlap the inputs. From-SVN: r276133
-rw-r--r--libgcc/ChangeLog6
-rw-r--r--libgcc/config/aarch64/lse.S4
2 files changed, 8 insertions, 2 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 261ea7b..541a802 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-25 Richard Henderson <richard.henderson@linaro.org>
+
+ PR target/91834
+ * config/aarch64/lse.S (LDNM): Ensure STXR output does not
+ overlap the inputs.
+
2019-09-25 Shaokun Zhang <zhangshaokun@hisilicon.com>
* config/aarch64/sync-cache.c (__aarch64_sync_cache_range): Add support for
diff --git a/libgcc/config/aarch64/lse.S b/libgcc/config/aarch64/lse.S
index a5f6673..c797938 100644
--- a/libgcc/config/aarch64/lse.S
+++ b/libgcc/config/aarch64/lse.S
@@ -227,8 +227,8 @@ STARTFN NAME(LDNM)
8: mov s(tmp0), s(0)
0: LDXR s(0), [x1]
OP s(tmp1), s(0), s(tmp0)
- STXR w(tmp1), s(tmp1), [x1]
- cbnz w(tmp1), 0b
+ STXR w(tmp2), s(tmp1), [x1]
+ cbnz w(tmp2), 0b
ret
ENDFN NAME(LDNM)