31 lines
976 B
Plaintext
31 lines
976 B
Plaintext
$NetBSD: patch-ac,v 1.1 2008/08/17 22:40:26 dholland Exp $
|
|
|
|
--- fastlock.h.orig 2008-08-17 18:36:52.000000000 -0400
|
|
+++ fastlock.h 2008-08-17 18:36:55.000000000 -0400
|
|
@@ -77,6 +77,11 @@ inline static int tsl(fl_lock_t* lock)
|
|
" xchg %b1, %0" : "=q" (val), "=m" (*lock) : "0" (val) : "memory"
|
|
);
|
|
#endif /*NOSMP*/
|
|
+#elif defined __CPU_amd64
|
|
+ val=1;
|
|
+ asm volatile(
|
|
+ " xchg %b1, %0" : "=q" (val), "=m" (*lock) : "0" (val) : "memory"
|
|
+ );
|
|
#elif defined __CPU_sparc64
|
|
asm volatile(
|
|
"ldstub [%1], %0 \n\t"
|
|
@@ -142,6 +147,13 @@ inline static void release_lock(fl_lock_
|
|
" movb $0, (%0)" : /*no output*/ : "r"(lock): "memory"
|
|
/*" xchg %b0, %1" : "=q" (val), "=m" (*lock) : "0" (val) : "memory"*/
|
|
);
|
|
+#elif defined __CPU_amd64
|
|
+ char val;
|
|
+ val=0;
|
|
+ asm volatile(
|
|
+ " movb $0, (%0)" : /*no output*/ : "r"(lock): "memory"
|
|
+ /*" xchg %b0, %1" : "=q" (val), "=m" (*lock) : "0" (val) : "memory"*/
|
|
+ );
|
|
#elif defined __CPU_sparc64
|
|
asm volatile(
|
|
#ifndef NOSMP
|