Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5602 serge 1
format MS COFF
2
use32
3
 
4
MUTEX.lock      equ 0
5
MUTEX.handle    equ 4
6
 
7
section '.text' align 16 code readable executable
8
 
9
public @mutex_lock@4
10
 
11
@mutex_lock@4:
12
 
13
        mov     eax, 1
14
        lock xadd [ecx+MUTEX.lock], eax
15
        test    eax, eax
16
        jnz     .slow
17
        ret
18
.slow:
19
        push    ebx
20
        push    esi
21
        push    edi
22
        mov     edi, ecx
23
        mov     ecx, [edi+MUTEX.handle]
24
        mov     edx, 2
25
        mov     ebx, edx
26
        xor     esi, esi
27
align 4
28
.again:
29
        mov     eax, edx
30
        xchg    eax, [edi+MUTEX.lock]
31
        test    eax, eax
32
        jz      .ok
33
 
34
        mov     eax, 77
35
        int     0x40
36
        jmp     .again
37
.ok:
38
        pop     edi
39
        pop     esi
40
        pop     ebx
41
        ret