]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libc/mips/tas.s
merge
[plan9front.git] / sys / src / libc / mips / tas.s
1 /*
2  *      magnum user level lock code
3  */
4
5 #define LL(base, rt)    WORD    $((060<<26)|((base)<<21)|((rt)<<16))
6 #define SC(base, rt)    WORD    $((070<<26)|((base)<<21)|((rt)<<16))
7 #define NOOP            WORD    $0x27
8 #define COP3            WORD    $(023<<26)
9
10         TEXT    C_3ktas(SB),$0
11         MOVW    R1, R21
12 btas:
13         MOVW    R21, R1
14         MOVB    R0, 1(R1)
15         NOOP
16         COP3
17         BLTZ    R1, btas
18         RET
19
20         TEXT    C_4ktas(SB), $0
21         MOVW    R1, R2          /* address of key */
22 tas1:
23         MOVW    $1, R3
24         LL(2, 1)
25         NOOP
26         SC(2, 3)
27         NOOP
28         BEQ     R3, tas1
29         RET
30
31         TEXT    C_fcr0(SB), $0
32         MOVW    FCR0, R1
33         RET