Older binutils don't understand qword ptr
[reactos.git] / reactos / ntoskrnl / ex / i386 / fastinterlck_asm.S
index 89cc878..d931302 100644 (file)
@@ -8,28 +8,9 @@
  \r
 /* INCLUDES ******************************************************************/\r
 #include <ndk/asm.h>\r
+#include <internal/i386/asmmacro.S>\r
 .intel_syntax noprefix\r
 \r
-//#define CONFIG_SMP\r
-\r
-#ifdef CONFIG_SMP\r
-#define LOCK lock\r
-#define ACQUIRE_SPINLOCK(x, y) \\r
-    lock bts dword ptr [x], 0; \\r
-    jb y\r
-#define RELEASE_SPINLOCK(x) mov byte ptr [x], 0\r
-#define SPIN_ON_LOCK(x, y) \\r
-1: \\r
-    test dword ptr [x], 1; \\r
-    jz y; \\r
-    pause; \\r
-    jmp 1b\r
-#else\r
-#define LOCK\r
-#define ACQUIRE_SPINLOCK(x, y)\r
-#define RELEASE_SPINLOCK(x) \r
-#endif\r
-\r
 /* FUNCTIONS ****************************************************************/\r
 \r
 /*\r
 \r
     /* Get next pointer and do the exchange */\r
     mov ebx, [eax]\r
-    LOCK cmpxchg8b qword ptr [ebp]\r
+    LOCK cmpxchg8b [ebp]\r
     jnz 1b\r
 \r
     /* Restore registers and return */\r
     lea ecx, [edx+0x10001]\r
 \r
     /* Do the exchange */\r
-    LOCK cmpxchg8b qword ptr [ebp]\r
+    LOCK cmpxchg8b [ebp]\r
     jnz 1b\r
 \r
     /* Restore registers and return */\r
     mov cx, bx\r
 \r
     /* Do the exchange */\r
-    LOCK cmpxchg8b qword ptr [ebp]\r
+    LOCK cmpxchg8b [ebp]\r
     jnz 1b\r
 \r
     /* Restore registers and return */\r
 @ExfInterlockedCompareExchange64@12:\r
 \r
     /* Save registers */\r
-    push ebp\r
+    push ebx\r
     push ebp\r
 \r
     /* Get desination pointer, exchange value and comperand value/address */\r
     mov edx, [edx+4]\r
 \r
     /* Do the op */\r
-    LOCK cmpxchg8b qword ptr [ebp]\r
+    LOCK cmpxchg8b [ebp]\r
 \r
     /* Restore volatiles */\r
     pop ebp\r
     mov edx, [edx+4]\r
 \r
     /* Do the op */\r
-    LOCK cmpxchg8b qword ptr [ebp]\r
+    LOCK cmpxchg8b [ebp]\r
 \r
     /* Restore volatiles */\r
     pop ebp\r