]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libc/68000/memset.s
marshal(1): fix example: upas/mail -> mail (thanks fulton)
[plan9front.git] / sys / src / libc / 68000 / memset.s
1         TEXT    memset(SB), $0
2         MOVL    n+8(FP), R0
3         BLE     return
4         MOVL    s1+0(FP), A1
5         CLRL    R1
6         MOVB    c+7(FP), R1
7         BEQ     l1
8
9 /*
10  * create 4 replicated copies
11  * of the byte in R1
12  */
13         MOVL    R1, R2
14         ASLL    $8, R2
15         ORL     R2, R1
16         MOVL    R1, R2
17         SWAP    R2
18         ORL     R2, R1
19
20 /*
21  * byte-at-a-time until alligned
22  */
23 l1:
24         MOVL    A1, R1
25         ANDL    $3, R1
26         BEQ     l2
27         SUBL    $1, R0
28         BLT     return
29         MOVB    R1, (A1)+
30         BRA     l1
31
32 /*
33  * quad-long-at-a-time set
34  */
35 l2:
36         SUBL    $16, R0
37         BLT     l3
38         MOVL    R1, (A1)+
39         MOVL    R1, (A1)+
40         MOVL    R1, (A1)+
41         MOVL    R1, (A1)+
42         BRA     l2
43
44 /*
45  * cleanup byte-at-a-time
46  */
47 l3:
48         ADDL    $15, R0
49         BLT     return
50 l4:
51         MOVB    R1, (A1)+
52         SUBL    $1, R0
53         BGE     l4
54
55 return:
56         MOVL    s1+0(FP),R0
57         RTS