static inline int SHORTLOCK(struct sShortSpinlock *Lock)
{
- #if 1
+ #if 0
// Coped from linux, yes, but I know what it does now :)
Uint tmp;
__asm__ __volatile__ (
: "r" (&Lock->Lock), "r" (1)
: "cc" // Condition codes clobbered
);
+ #elif 1
+ while( *(volatile int*)&Lock->Lock ) ;
+ Lock->Lock = 1;
#else
int v = 1;
while( v )
__asm__ __volatile__ (
- "swp %0, [%1]"
+ "swp %0, %0, [%1]"
: "=r" (v) : "r" (&Lock->Lock)
: "cc"
);