xref: /plan9-contrib/sys/src/libc/mips64/tas.s (revision f8bc6aaf8056e137bcdfb6117a990ac3eff62cc9)
1/*
2 *	mips 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
9	TEXT	_tas(SB), $0
10	TEXT	C_4ktas(SB), $0
11	MOVV	R1, R2		/* address of key */
12tas1:
13	MOVW	$1, R3
14	LL(2, 1)
15	NOOP
16	SC(2, 3)
17	NOOP
18	BEQ	R3, tas1
19	RET
20