1*ec59a3ddSDavid du Colombier#include <sys/regdef.h> 2*ec59a3ddSDavid du Colombier#include <sys/asm.h> 3*ec59a3ddSDavid du Colombier 4*ec59a3ddSDavid du Colombier.globl tas 5*ec59a3ddSDavid du Colombier.ent tas 2 6*ec59a3ddSDavid du Colombier 7*ec59a3ddSDavid du Colombiertas: 8*ec59a3ddSDavid du Colombier.set noreorder 9*ec59a3ddSDavid du Colombier1: 10*ec59a3ddSDavid du Colombier ori t1, zero, 12345 /* t1 = 12345 */ 11*ec59a3ddSDavid du Colombier ll t0, (a0) /* t0 = *a0 */ 12*ec59a3ddSDavid du Colombier sc t1, (a0) /* *a0 = t1 if *a0 hasn't changed; t1=success */ 13*ec59a3ddSDavid du Colombier beq t1, zero, 1b /* repeat if *a0 did change */ 14*ec59a3ddSDavid du Colombier nop 15*ec59a3ddSDavid du Colombier 16*ec59a3ddSDavid du Colombier j $31 /* return */ 17*ec59a3ddSDavid du Colombier or v0, t0, zero /* set return value on way out */ 18*ec59a3ddSDavid du Colombier 19*ec59a3ddSDavid du Colombier.set reorder 20*ec59a3ddSDavid du Colombier.end tas 21*ec59a3ddSDavid du Colombier 22