ref: 31d7a7a1b23f7c7a9908c572cc7a1a25b8c6aca2
dir: /posix-mips/tas.s/
#include <sys/regdef.h> #include <sys/asm.h> .globl tas .ent tas 2 tas: .set noreorder 1: ori t1, zero, 12345 /* t1 = 12345 */ ll t0, (a0) /* t0 = *a0 */ sc t1, (a0) /* *a0 = t1 if *a0 hasn't changed; t1=success */ beq t1, zero, 1b /* repeat if *a0 did change */ nop j $31 /* return */ or v0, t0, zero /* set return value on way out */ .set reorder .end tas