mirror of
https://github.com/0intro/conterm
synced 2024-11-25 07:09:34 +03:00
23 lines
283 B
C
23 lines
283 B
C
// 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;
|
|
}
|
|
}
|