1TEXT _xinc(SB),$0 /* void _xinc(long *); */ 2TEXT ainc(SB),$0 /* long ainc(long *); */ 3 MOVW R3, R4 4xincloop: 5 LWAR (R4), R3 6 ADD $1, R3 7 DCBT (R4) /* fix 405 errata cpu_210 */ 8 STWCCC R3, (R4) 9 BNE xincloop 10 RETURN 11 12TEXT _xdec(SB),$0 /* long _xdec(long *); */ 13TEXT adec(SB),$0 /* long adec(long *); */ 14 MOVW R3, R4 15xdecloop: 16 LWAR (R4), R3 17 ADD $-1, R3 18 DCBT (R4) /* fix 405 errata cpu_210 */ 19 STWCCC R3, (R4) 20 BNE xdecloop 21 RETURN 22 23TEXT loadlink(SB), $0 24 25 LWAR (R3), R3 26 RETURN 27 28TEXT storecond(SB), $0 29 30 MOVW val+4(FP), R4 31 DCBT (R3) /* fix 405 errata cpu_210 */ 32 STWCCC R4, (R3) 33 BNE storecondfail 34 MOVW $1, R3 35 RETURN 36storecondfail: 37 MOVW $0, R3 38 RETURN 39 40/* 41 * int cas(uint *p, int ov, int nv); 42 * int casp(void **p, void *ov, void *nv); 43 */ 44 45TEXT cas+0(SB),0,$0 46TEXT casp+0(SB),0,$0 47 MOVW ov+4(FP),R4 48 MOVW nv+8(FP),R8 49 LWAR (R3),R5 50 CMP R5,R4 51 BNE fail 52 DCBT (R3) /* fix 405 errata cpu_210 */ 53 STWCCC R8,(R3) 54 BNE fail1 55 MOVW $1,R3 56 RETURN 57fail: 58 DCBT (R3) /* fix 405 errata cpu_210 */ 59 STWCCC R5,(R3) /* give up exclusive access */ 60fail1: 61 MOVW R0,R3 62 RETURN 63 END 64