1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
TEXT memset(SB), $0
MOVL n+8(FP), R0
BLE return
MOVL s1+0(FP), A1
CLRL R1
MOVB c+7(FP), R1
BEQ l1
/*
* create 4 replicated copies
* of the byte in R1
*/
MOVL R1, R2
ASLL $8, R2
ORL R2, R1
MOVL R1, R2
SWAP R2
ORL R2, R1
/*
* quad-long-at-a-time set
* destination allignment is not
* very important.
*/
l1:
SUBL $16, R0
BLT l2
MOVL R1, (A1)+
MOVL R1, (A1)+
MOVL R1, (A1)+
MOVL R1, (A1)+
BRA l1
/*
* cleanup byte-at-a-time
*/
l2:
ADDL $15, R0
BLT return
l3:
MOVB R1, (A1)+
SUBL $1, R0
BGE l3
return:
MOVL s1+0(FP),R0
RTS
|