aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernhard Schommer <bernhardschommer@gmail.com>2015-09-22 13:25:57 +0200
committerBernhard Schommer <bernhardschommer@gmail.com>2015-09-22 13:25:57 +0200
commitc212ab7a8adea516db72f17d818393629dbde1b3 (patch)
treea94744c9c2c64efda9e8a042b9a1863be077739c
parenta972e8ecbc011a48201279f446218676c15126ef (diff)
downloadcompcert-kvx-c212ab7a8adea516db72f17d818393629dbde1b3.tar.gz
compcert-kvx-c212ab7a8adea516db72f17d818393629dbde1b3.zip
Use R10 in atomic compare and exchange for the rlwinm.
-rw-r--r--powerpc/Asmexpand.ml4
1 files changed, 2 insertions, 2 deletions
diff --git a/powerpc/Asmexpand.ml b/powerpc/Asmexpand.ml
index 0dfebc13..fc0fc44e 100644
--- a/powerpc/Asmexpand.ml
+++ b/powerpc/Asmexpand.ml
@@ -532,8 +532,8 @@ let expand_builtin_inline name args res =
emit (Plabel lblneq);
(* Here, CR2 is true if the exchange succeeded, false if it failed *)
emit (Pisync);
- emit (Pmfcr dst);
- emit (Prlwinm (res,dst,(Z.of_uint 3),_1));
+ emit (Pmfcr GPR10);
+ emit (Prlwinm (res,GPR10,(Z.of_uint 3),_1));
(* Update exp with the current value of dst if the exchange failed *)
emit (Pbt (CRbit_2,lblsucc));
emit (Pstw (GPR0,Cint _0,exp));