-#ifdef LISP_FEATURE_SB_THREAD
-static inline void
-get_spinlock(lispobj *word,int value)
+#define COMPILER_BARRIER \
+ do { __asm__ __volatile__ ( "" : : : "memory"); } while (0)
+
+#ifdef LISP_FEATURE_WIN32
+extern int os_number_of_processors;
+#define yield_on_uniprocessor() \
+ do { if (os_number_of_processors<=1) SwitchToThread(); } while(0)
+#else
+/* Stubs are better than ifdef EVERYWHERE. */
+#define yield_on_uniprocessor() \
+ do {} while(0)
+#endif
+
+
+static inline void
+get_spinlock(volatile lispobj *word, unsigned long value)