summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--byterun/signals_machdep.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/byterun/signals_machdep.h b/byterun/signals_machdep.h
index 98799807c..08c5f4cb8 100644
--- a/byterun/signals_machdep.h
+++ b/byterun/signals_machdep.h
@@ -42,6 +42,16 @@
: "r" (&(src)), "r" (0) \
: "cr0", "memory")
+#elif defined(__GNUC__) && defined(__ppc64__)
+
+#define Read_and_clear(dst,src) \
+ asm("0: ldarx %0, 0, %1\n\t" \
+ "stdcx. %2, 0, %1\n\t" \
+ "bne- 0b" \
+ : "=&r" (dst) \
+ : "r" (&(src)), "r" (0) \
+ : "cr0", "memory")
+
#else
/* Default, non-atomic implementation */