Subversion Repositories Kolibri OS

Rev

Rev 4872 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4349 Serge 1
void __mutex_lock(volatile int *val)
2
{
3
    int tmp;
4
 
5
    __asm__ __volatile__ (
6
"0:\n\t"
7
    "mov %0, %1\n\t"
8
    "testl %1, %1\n\t"
9
    "jz 1f\n\t"
10
 
11
    "movl $68, %%eax\n\t"
12
    "movl $1,  %%ebx\n\t"
13
    "int  $0x40\n\t"
14
    "jmp 0b\n\t"
15
"1:\n\t"
16
    "incl %1\n\t"
17
    "xchgl %0, %1\n\t"
18
    "testl %1, %1\n\t"
19
    "jnz 0b\n"
20
    : "+m" (*val), "=&r"(tmp)
21
    ::"eax","ebx" );
22
}
23