]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libc/amd64/strcpy.s
merge
[plan9front.git] / sys / src / libc / amd64 / strcpy.s
1         TEXT    strcpy(SB),$0
2
3         MOVL    $0, AX
4         MOVQ    $-1, CX
5         CLD
6 /*
7  * find end of second string
8  */
9
10         MOVQ    p2+8(FP), DI
11         REPN;   SCASB
12
13         MOVQ    DI, BX
14         SUBQ    p2+8(FP), BX
15
16 /*
17  * copy the memory
18  */
19         MOVQ    RARG, DI
20         MOVQ    p2+8(FP), SI
21 /*
22  * copy whole longs, if aligned
23  */
24         MOVQ    DI, CX
25         ORQ             SI, CX
26         ANDL    $3, CX
27         JNE     c3
28         MOVQ    BX, CX
29         SHRQ    $2, CX
30         REP;    MOVSL
31 /*
32  * copy the rest, by bytes
33  */
34         ANDL    $3, BX
35 c3:
36         MOVL    BX, CX
37         REP;    MOVSB
38
39         MOVQ    RARG, AX
40         RET