Merge from amd64-branch:
[reactos.git] / reactos / ntoskrnl / ke / spinlock.c
index c2343e2..0a98b33 100644 (file)
@@ -140,7 +140,6 @@ KeReleaseQueuedSpinLockFromDpcLevel(IN PKSPIN_LOCK_QUEUE LockHandle)
 
 /* PUBLIC FUNCTIONS **********************************************************/
 
-#ifdef _X86_
 /*
  * @implemented
  */
@@ -183,7 +182,6 @@ _KeInitializeSpinLock(IN PKSPIN_LOCK SpinLock)
     /* Clear it */
     *SpinLock = 0;
 }
-#endif
 
 /*
  * @implemented
@@ -456,3 +454,22 @@ KeTestSpinLock(IN PKSPIN_LOCK SpinLock)
     /* Spinlock appears to be free */
     return TRUE;
 }
+
+#ifdef _M_IX86
+VOID
+NTAPI
+Kii386SpinOnSpinLock(PKSPIN_LOCK SpinLock, ULONG Flags)
+{
+    // FIXME: Handle flags
+    UNREFERENCED_PARAMETER(Flags);
+
+    /* Spin until it's unlocked */
+    while (*(volatile KSPIN_LOCK *)SpinLock & 1)
+    {
+        // FIXME: Check for timeout
+
+        /* Yield and keep looping */
+        YieldProcessor();
+    }
+}
+#endif