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