1*219b2ee8SDavid du Colombier TEXT memcpy(SB), $0 2*219b2ee8SDavid du Colombier 3*219b2ee8SDavid du Colombier MOVL p1+0(FP), DI 4*219b2ee8SDavid du Colombier MOVL p2+4(FP), SI 5*219b2ee8SDavid du Colombier MOVL n+8(FP), BX 6*219b2ee8SDavid du Colombier CMPL BX, $0 7*219b2ee8SDavid du Colombier JGE ok 8*219b2ee8SDavid du Colombier MOVL $0, SI 9*219b2ee8SDavid du Colombierok: 10*219b2ee8SDavid du Colombier CLD 11*219b2ee8SDavid du Colombier/* 12*219b2ee8SDavid du Colombier * check and set for backwards 13*219b2ee8SDavid du Colombier */ 14*219b2ee8SDavid du Colombier CMPL SI, DI 15*219b2ee8SDavid du Colombier JLS back 16*219b2ee8SDavid du Colombier/* 17*219b2ee8SDavid du Colombier * copy whole longs 18*219b2ee8SDavid du Colombier */ 19*219b2ee8SDavid du Colombier MOVL BX, CX 20*219b2ee8SDavid du Colombier SHRL $2, CX 21*219b2ee8SDavid du Colombier REP; MOVSL 22*219b2ee8SDavid du Colombier/* 23*219b2ee8SDavid du Colombier * copy the rest, by bytes 24*219b2ee8SDavid du Colombier */ 25*219b2ee8SDavid du Colombier ANDL $3, BX 26*219b2ee8SDavid du Colombier MOVL BX, CX 27*219b2ee8SDavid du Colombier REP; MOVSB 28*219b2ee8SDavid du Colombier 29*219b2ee8SDavid du Colombier MOVL p+0(FP),AX 30*219b2ee8SDavid du Colombier RET 31*219b2ee8SDavid du Colombier/* 32*219b2ee8SDavid du Colombier * whole thing backwards has 33*219b2ee8SDavid du Colombier * adjusted addresses 34*219b2ee8SDavid du Colombier */ 35*219b2ee8SDavid du Colombierback: 36*219b2ee8SDavid du Colombier ADDL BX, DI 37*219b2ee8SDavid du Colombier ADDL BX, SI 38*219b2ee8SDavid du Colombier SUBL $4, DI 39*219b2ee8SDavid du Colombier SUBL $4, SI 40*219b2ee8SDavid du Colombier STD 41*219b2ee8SDavid du Colombier/* 42*219b2ee8SDavid du Colombier * copy whole longs 43*219b2ee8SDavid du Colombier */ 44*219b2ee8SDavid du Colombier MOVL BX, CX 45*219b2ee8SDavid du Colombier SHRL $2, CX 46*219b2ee8SDavid du Colombier ANDL $3, BX 47*219b2ee8SDavid du Colombier REP; MOVSL 48*219b2ee8SDavid du Colombier/* 49*219b2ee8SDavid du Colombier * copy the rest, by bytes 50*219b2ee8SDavid du Colombier */ 51*219b2ee8SDavid du Colombier ADDL $3, DI 52*219b2ee8SDavid du Colombier ADDL $3, SI 53*219b2ee8SDavid du Colombier MOVL BX, CX 54*219b2ee8SDavid du Colombier REP; MOVSB 55*219b2ee8SDavid du Colombier 56*219b2ee8SDavid du Colombier MOVL p+0(FP),AX 57*219b2ee8SDavid du Colombier RET 58