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