1.0.8.34: Fix MIPS spinlock implementation.
authorThiemo Seufer <ths@networkno.de>
Sun, 19 Aug 2007 23:31:36 +0000 (23:31 +0000)
committerThiemo Seufer <ths@networkno.de>
Sun, 19 Aug 2007 23:31:36 +0000 (23:31 +0000)
src/runtime/mips-arch.h
version.lisp-expr

index eba16e4..ec80381 100644 (file)
@@ -41,7 +41,20 @@ get_spinlock(volatile lispobj *word, long value)
 static inline void
 release_spinlock(volatile lispobj *word)
 {
+#ifdef LISP_FEATURE_SB_THREAD
+    __asm__ __volatile__ (
+        "       .set push\n"
+        "       .set mips2\n"
+        "       .set noreorder\n"
+        "       sw      $0,%[__mem]\n"
+        "       sync\n"
+        "       .set pop"
+        :
+        : [__mem] "R" (*word)
+        : "memory");
+#else /* LISP_FEATURE_SB_THREAD */
     *word=0;
+#endif
 }
 
 #endif /* _MIPS_ARCH_H */
index d4c6d84..118b440 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.8.33"
+"1.0.8.34"