1*6ca8a7e3SDavid du ColombierTEXT strcpy(SB), $0 27dd7cddfSDavid du Colombier MOVW R0, to+0(FP) /* need to save for return value */ 37dd7cddfSDavid du Colombier MOVW from+4(FP), R1 47dd7cddfSDavid du Colombier MOVW $0xFF, R2 /* mask */ 57dd7cddfSDavid du Colombier 680ee5cbfSDavid du Colombiersalign: /* align source on 4 */ 77dd7cddfSDavid du Colombier AND.S $3, R1, R3 880ee5cbfSDavid du Colombier BEQ dalign 97dd7cddfSDavid du Colombier MOVBU.P 1(R1), R3 /* implicit write back */ 107dd7cddfSDavid du Colombier TST R3, R2 117dd7cddfSDavid du Colombier MOVBU.P R3, 1(R0) /* implicit write back */ 1280ee5cbfSDavid du Colombier BNE salign 1380ee5cbfSDavid du Colombier B return 147dd7cddfSDavid du Colombier 1580ee5cbfSDavid du Colombierdalign: /* is destination now aligned? */ 167dd7cddfSDavid du Colombier AND.S $3, R0, R3 1780ee5cbfSDavid du Colombier BNE uloop 187dd7cddfSDavid du Colombier 1980ee5cbfSDavid du Colombieraloop: 2080ee5cbfSDavid du Colombier MOVW.P 4(R1), R4 /* read 4, write 4 */ 217dd7cddfSDavid du Colombier TST R4, R2 /* AND.S R3, R2, Rx */ 227dd7cddfSDavid du Colombier TST.NE R4>>8, R2 237dd7cddfSDavid du Colombier TST.NE R4>>16, R2 247dd7cddfSDavid du Colombier TST.NE R4>>24, R2 2580ee5cbfSDavid du Colombier BEQ tail 267dd7cddfSDavid du Colombier MOVW.P R4, 4(R0) 2780ee5cbfSDavid du Colombier B aloop 287dd7cddfSDavid du Colombier 2980ee5cbfSDavid du Colombieruloop: 3080ee5cbfSDavid du Colombier MOVW.P 4(R1), R4 /* read 4, write 1,1,1,1 */ 3180ee5cbfSDavid du Colombier 3280ee5cbfSDavid du Colombiertail: 337dd7cddfSDavid du Colombier AND.S R4, R2, R3 3480ee5cbfSDavid du Colombier MOVBU.NE.P R3, 1(R0) 357dd7cddfSDavid du Colombier AND.NE.S R4>>8, R2, R3 367dd7cddfSDavid du Colombier MOVBU.NE.P R3, 1(R0) 377dd7cddfSDavid du Colombier AND.NE.S R4>>16, R2, R3 387dd7cddfSDavid du Colombier MOVBU.NE.P R3, 1(R0) 397dd7cddfSDavid du Colombier AND.NE.S R4>>24, R2, R3 4080ee5cbfSDavid du Colombier MOVBU.P R3, 1(R0) 4180ee5cbfSDavid du Colombier BNE uloop 4280ee5cbfSDavid du Colombier B return 437dd7cddfSDavid du Colombier 4480ee5cbfSDavid du Colombierreturn: 4580ee5cbfSDavid du Colombier MOVW to+0(FP), R0 4680ee5cbfSDavid du Colombier RET 47