diff --git a/dlls/ntdll/critsection.c b/dlls/ntdll/critsection.c
index ee10fcf34b54d5c8c2ed817a973771b4452d28df..bf00bbbfd2228ea17ac34c73f91673776994b74f 100644
--- a/dlls/ntdll/critsection.c
+++ b/dlls/ntdll/critsection.c
@@ -135,7 +135,8 @@ NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount( RTL_CRITICAL_SECTION *
     crit->RecursionCount = 0;
     crit->OwningThread   = 0;
     crit->LockSemaphore  = 0;
-    crit->SpinCount      = spincount;
+    if (NtCurrentTeb()->Peb->NumberOfProcessors <= 1) spincount = 0;
+    crit->SpinCount = spincount & ~0x80000000;
     return STATUS_SUCCESS;
 }