30 lines · 469 B · Assembly
RawDownload
/* *	mips user level lock code */ #define	LL(base, rt)	WORD	$((060<<26)|((base)<<21)|((rt)<<16))#define	SC(base, rt)	WORD	$((070<<26)|((base)<<21)|((rt)<<16))#define	NOOP		WORD	$0x27#define COP3		WORD	$(023<<26) 	TEXT	C_3ktas(SB),$0	MOVW	R1, R21btas:	MOVW	R21, R1	MOVB	R0, 1(R1)	NOOP	COP3	BLTZ	R1, btas	RET 	TEXT	_tas(SB), $0	TEXT	C_4ktas(SB), $0	MOVW	R1, R2		/* address of key */tas1:	MOVW	$1, R3	LL(2, 1)	NOOP	SC(2, 3)	NOOP	BEQ	R3, tas1	RET