0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #include <asm/export.h>
0018 .set noat
0019 .set noreorder
0020 .text
0021 .globl memset
0022 .globl __memset
0023 .globl ___memset
0024 .globl __memset16
0025 .globl __constant_c_memset
0026
0027 .ent ___memset
0028 .align 5
0029 ___memset:
0030 .frame $30,0,$26,0
0031 .prologue 0
0032
0033 and $17,255,$1
0034 insbl $17,1,$17
0035 bis $17,$1,$17
0036 sll $17,16,$1
0037
0038 bis $17,$1,$17
0039 sll $17,32,$1
0040 bis $17,$1,$17
0041 ldq_u $31,0($30)
0042
0043 .align 5
0044 __constant_c_memset:
0045 addq $18,$16,$6
0046 bis $16,$16,$0
0047 xor $16,$6,$1
0048 ble $18,end
0049
0050 bic $1,7,$1
0051 beq $1,within_one_quad
0052 and $16,7,$3
0053 beq $3,aligned
0054
0055 ldq_u $4,0($16)
0056 bis $16,$16,$5
0057 insql $17,$16,$2
0058 subq $3,8,$3
0059
0060 addq $18,$3,$18
0061 mskql $4,$16,$4
0062 subq $16,$3,$16
0063 bis $2,$4,$1
0064
0065 bis $31,$31,$31
0066 ldq_u $31,0($30)
0067 stq_u $1,0($5)
0068 bis $31,$31,$31
0069
0070 .align 4
0071 aligned:
0072 sra $18,3,$3
0073 and $18,7,$18
0074 bis $16,$16,$5
0075 beq $3,no_quad
0076
0077 .align 3
0078 loop:
0079 stq $17,0($5)
0080 subq $3,1,$3
0081 addq $5,8,$5
0082 bne $3,loop
0083
0084 no_quad:
0085 bis $31,$31,$31
0086 beq $18,end
0087 ldq $7,0($5)
0088 mskqh $7,$6,$2
0089
0090 insqh $17,$6,$4
0091 bis $2,$4,$1
0092 stq $1,0($5)
0093 ret $31,($26),1
0094
0095 .align 3
0096 within_one_quad:
0097 ldq_u $1,0($16)
0098 insql $17,$16,$2
0099 mskql $1,$16,$4
0100 bis $2,$4,$2
0101
0102 mskql $2,$6,$4
0103 mskqh $1,$6,$2
0104 bis $2,$4,$1
0105 stq_u $1,0($16)
0106
0107 end:
0108 ret $31,($26),1
0109 .end ___memset
0110 EXPORT_SYMBOL(___memset)
0111 EXPORT_SYMBOL(__constant_c_memset)
0112
0113 .align 5
0114 .ent __memset16
0115 __memset16:
0116 .prologue 0
0117
0118 inswl $17,0,$1
0119 inswl $17,2,$2
0120 inswl $17,4,$3
0121 or $1,$2,$1
0122 inswl $17,6,$4
0123 or $1,$3,$1
0124 or $1,$4,$17
0125 br __constant_c_memset
0126
0127 .end __memset16
0128 EXPORT_SYMBOL(__memset16)
0129
0130 memset = ___memset
0131 __memset = ___memset
0132 EXPORT_SYMBOL(memset)
0133 EXPORT_SYMBOL(__memset)