xref: /plan9-contrib/sys/src/ape/lib/ap/spim/tas.s (revision 12b1df16f1a9233fb47d4260d51ef450cc19c368)
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