SHORTLOCK()
	cli; lock cmpxchg
SHORTREL()
	lock and ; sti


LONGLOCK()
	mov eax, 1
	lock cmpxchg lock.lock, eax
	if(eax) {
		SHORTLOCK(lock.listLock)
		// add to list (linked list, 4 static entries)
		SHORTREL(lock.listLock)
		for(;;)
		{
			check owner
			mov eax, 1
			lock cmpxchg lock.lock, eax
			if(!eax)	break;	// got lock
			Threads_Sleep();
		}
	}

LONGREL()
	lock and lock.lock, 0
	pop off front of list, free entry, wake thread
