1*12b1df16SDavid du Colombier/* 2*12b1df16SDavid du Colombier * mips user level lock code 3*12b1df16SDavid du Colombier */ 4*12b1df16SDavid du Colombier 5*12b1df16SDavid du Colombier#define LL(base, rt) WORD $((060<<26)|((base)<<21)|((rt)<<16)) 6*12b1df16SDavid du Colombier#define SC(base, rt) WORD $((070<<26)|((base)<<21)|((rt)<<16)) 7*12b1df16SDavid du Colombier#define NOOP WORD $0x27 8*12b1df16SDavid du Colombier#define COP3 WORD $(023<<26) 9*12b1df16SDavid du Colombier 10*12b1df16SDavid du Colombier TEXT C_3ktas(SB),$0 11*12b1df16SDavid du Colombier MOVW R1, R21 12*12b1df16SDavid du Colombierbtas: 13*12b1df16SDavid du Colombier MOVW R21, R1 14*12b1df16SDavid du Colombier MOVB R0, 1(R1) 15*12b1df16SDavid du Colombier NOOP 16*12b1df16SDavid du Colombier COP3 17*12b1df16SDavid du Colombier BLTZ R1, btas 18*12b1df16SDavid du Colombier RET 19*12b1df16SDavid du Colombier 20*12b1df16SDavid du Colombier TEXT tas(SB), $0 21*12b1df16SDavid du Colombier TEXT C_4ktas(SB), $0 22*12b1df16SDavid du Colombier MOVW R1, R2 /* address of key */ 23*12b1df16SDavid du Colombiertas1: 24*12b1df16SDavid du Colombier MOVW $1, R3 25*12b1df16SDavid du Colombier LL(2, 1) 26*12b1df16SDavid du Colombier NOOP 27*12b1df16SDavid du Colombier SC(2, 3) 28*12b1df16SDavid du Colombier NOOP 29*12b1df16SDavid du Colombier BEQ R3, tas1 30*12b1df16SDavid du Colombier RET 31