1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #include <asm/export.h>
18 .set noat
19 .set noreorder
20 .text
21 .globl memset
22 .globl __memset
23 .globl ___memset
24 .globl __memset16
25 .globl __constant_c_memset
26
27 .ent ___memset
28 .align 5
29 ___memset:
30 .frame $30,0,$26,0
31 .prologue 0
32
33 and $17,255,$1
34 insbl $17,1,$17
35 bis $17,$1,$17
36 sll $17,16,$1
37
38 bis $17,$1,$17
39 sll $17,32,$1
40 bis $17,$1,$17
41 ldq_u $31,0($30)
42
43 .align 5
44 __constant_c_memset:
45 addq $18,$16,$6
46 bis $16,$16,$0
47 xor $16,$6,$1
48 ble $18,end
49
50 bic $1,7,$1
51 beq $1,within_one_quad
52 and $16,7,$3
53 beq $3,aligned
54
55 ldq_u $4,0($16)
56 bis $16,$16,$5
57 insql $17,$16,$2
58 subq $3,8,$3
59
60 addq $18,$3,$18
61 mskql $4,$16,$4
62 subq $16,$3,$16
63 bis $2,$4,$1
64
65 bis $31,$31,$31
66 ldq_u $31,0($30)
67 stq_u $1,0($5)
68 bis $31,$31,$31
69
70 .align 4
71 aligned:
72 sra $18,3,$3
73 and $18,7,$18
74 bis $16,$16,$5
75 beq $3,no_quad
76
77 .align 3
78 loop:
79 stq $17,0($5)
80 subq $3,1,$3
81 addq $5,8,$5
82 bne $3,loop
83
84 no_quad:
85 bis $31,$31,$31
86 beq $18,end
87 ldq $7,0($5)
88 mskqh $7,$6,$2
89
90 insqh $17,$6,$4
91 bis $2,$4,$1
92 stq $1,0($5)
93 ret $31,($26),1
94
95 .align 3
96 within_one_quad:
97 ldq_u $1,0($16)
98 insql $17,$16,$2
99 mskql $1,$16,$4
100 bis $2,$4,$2
101
102 mskql $2,$6,$4
103 mskqh $1,$6,$2
104 bis $2,$4,$1
105 stq_u $1,0($16)
106
107 end:
108 ret $31,($26),1
109 .end ___memset
110 EXPORT_SYMBOL(___memset)
111 EXPORT_SYMBOL(__constant_c_memset)
112
113 .align 5
114 .ent __memset16
115 __memset16:
116 .prologue 0
117
118 inswl $17,0,$1
119 inswl $17,2,$2
120 inswl $17,4,$3
121 or $1,$2,$1
122 inswl $17,6,$4
123 or $1,$3,$1
124 or $1,$4,$17
125 br __constant_c_memset
126
127 .end __memset16
128 EXPORT_SYMBOL(__memset16)
129
130 memset = ___memset
131 __memset = ___memset
132 EXPORT_SYMBOL(memset)
133 EXPORT_SYMBOL(__memset)