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