Added isync to the interlocked functions.
diff --git a/libs/port/interlocked.c b/libs/port/interlocked.c
index bd0364d..5e1dcf7 100644
--- a/libs/port/interlocked.c
+++ b/libs/port/interlocked.c
@@ -112,6 +112,7 @@
" bne 1f\n"
" stwcx. %3,0,%2\n"
" bne- 0b\n"
+ " isync\n"
"1: "
: "=&r"(ret), "=&r"(scratch)
: "r"(dest), "r"(xchg), "r"(compare)
@@ -129,6 +130,7 @@
" bne 1f\n"
" stwcx. %3,0,%2\n"
" bne- 0b\n"
+ " isync\n"
"1: "
: "=&r"(ret), "=&r"(scratch)
: "r"(dest), "r"(xchg), "r"(compare)
@@ -145,6 +147,7 @@
" add %0, %2, %0\n"
" stwcx. %0, %3, %1\n"
" bne- 0b\n"
+ " isync\n"
: "=&r" (ret)
: "r"(dest), "r"(incr), "r"(zero)
: "cr0", "memory", "r0"
@@ -159,6 +162,7 @@
"0: lwarx %0,0,%1\n"
" stwcx. %2,0,%1\n"
" bne- 0b\n"
+ " isync\n"
: "=&r"(ret)
: "r"(dest), "r"(val)
: "cr0","memory","r0");
@@ -172,6 +176,7 @@
"0: lwarx %0,0,%1\n"
" stwcx. %2,0,%1\n"
" bne- 0b \n"
+ " isync\n"
: "=&r"(ret)
: "r"(dest), "r"(val)
: "cr0","memory","r0");