shithub: drawterm-fdroid

ref: 54ca86f879d7f131fa76dc448193caa31feed5ad
dir: /win32-386/tas.c/

View raw version
// could also use windozy InterlockedCompareExchange(p, 1, 0), but why
int
tas(long *p)
{	
	int v;
	
	_asm {
		mov	eax, p
		mov	ebx, 1
		xchg	ebx, [eax]
		mov	v, ebx
	}

	switch(v) {
	case 0:
	case 1:
		return v;
	default:
		print("canlock: corrupted 0x%lux\n", v);
		return 1;
	}
}