All pastes #48394 Raw Edit

Something

public text v1 · immutable
#48394 ·published 2006-04-06 19:12 UTC
rendered paste body
static inline void nt_spin_lock(volatile NT_SPIN_LOCK *lock)
{
	__asm__ __volatile__(
		"\n"
		"1:\t"
		"  lock; addl $1, %0; mfence\n\t"
		"  cmpl %1, %0\n\t"
		"  je 3f\n"
		"2:\t"
		"  rep; nop\n\t"
		"  cmpl %2, %0\n\t"
		"  jne 2b\n\t"
		"  jmp 1b\n"
		"3:\n\t"
		: "=m" (*lock)
		: "i" (NT_SPIN_LOCK_UNLOCKED + 1), "i" (NT_SPIN_LOCK_UNLOCKED)
		: "memory");
}