aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/config/cpu/cris
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3/config/cpu/cris')
-rw-r--r--libstdc++-v3/config/cpu/cris/atomicity.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/libstdc++-v3/config/cpu/cris/atomicity.h b/libstdc++-v3/config/cpu/cris/atomicity.h
index da16a1a..56dd0ed 100644
--- a/libstdc++-v3/config/cpu/cris/atomicity.h
+++ b/libstdc++-v3/config/cpu/cris/atomicity.h
@@ -37,7 +37,20 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
int __tmp;
_Atomic_word __result;
-#if (__CRIS_arch_version >= 10)
+#if (__CRIS_arch_version >= 32)
+ __asm__ __volatile__ (" clearf p \n"
+ "0: \n"
+ " move.d %4,%2 \n"
+ " move.d [%3],%0 \n"
+ " add.d %0,%2 \n"
+ " ax \n"
+ " move.d %2,[%3] \n"
+ " bcs 0b \n"
+ " clearf p \n"
+ : "=&r" (__result), "=Q" (*__mem), "=&r" (__tmp)
+ : "r" (__mem), "g" (__val), "Q" (*__mem)
+ : "memory");
+#elif (__CRIS_arch_version >= 10)
__asm__ __volatile__ (" clearf \n"
"0: \n"
" move.d %4,%2 \n"