1
2
3
4
5
6
7
8
9
10
11#include <asm/processor.h>
12#include <asm/errno.h>
13#include <asm/ppc_asm.h>
14#include <asm/export.h>
15
16 .text
17
18
19
20_GLOBAL(strncpy)
21 PPC_LCMPI 0,r5,0
22 beqlr
23 mtctr r5
24 addi r6,r3,-1
25 addi r4,r4,-1
26 .balign 16
271: lbzu r0,1(r4)
28 cmpwi 0,r0,0
29 stbu r0,1(r6)
30 bdnzf 2,1b
31 bnelr
32 mfctr r5
33 PPC_LCMPI 0,r5,0
34 beqlr
352: stbu r0,1(r6)
36 bdnz 2b
37 blr
38EXPORT_SYMBOL(strncpy)
39
40_GLOBAL(strncmp)
41 PPC_LCMPI 0,r5,0
42 beq- 2f
43 mtctr r5
44 addi r5,r3,-1
45 addi r4,r4,-1
46 .balign 16
471: lbzu r3,1(r5)
48 cmpwi 1,r3,0
49 lbzu r0,1(r4)
50 subf. r3,r0,r3
51 beqlr 1
52 bdnzt eq,1b
53 blr
542: li r3,0
55 blr
56EXPORT_SYMBOL(strncmp)
57
58#ifdef CONFIG_PPC32
59_GLOBAL(memcmp)
60 PPC_LCMPI 0,r5,0
61 beq- 2f
62 mtctr r5
63 addi r6,r3,-1
64 addi r4,r4,-1
651: lbzu r3,1(r6)
66 lbzu r0,1(r4)
67 subf. r3,r0,r3
68 bdnzt 2,1b
69 blr
702: li r3,0
71 blr
72EXPORT_SYMBOL(memcmp)
73#endif
74
75_GLOBAL(memchr)
76 PPC_LCMPI 0,r5,0
77 beq- 2f
78 mtctr r5
79 addi r3,r3,-1
80 .balign 16
811: lbzu r0,1(r3)
82 cmpw 0,r0,r4
83 bdnzf 2,1b
84 beqlr
852: li r3,0
86 blr
87EXPORT_SYMBOL(memchr)
88
89#ifdef CONFIG_PPC32
90_GLOBAL(__clear_user)
91 addi r6,r3,-4
92 li r3,0
93 li r5,0
94 cmplwi 0,r4,4
95 blt 7f
96
9711: stwu r5,4(r6)
98 beqlr
99
100 andi. r0,r6,3
101 add r4,r0,r4
102 subf r6,r0,r6
103 srwi r0,r4,2
104 andi. r4,r4,3
105 mtctr r0
106 bdz 7f
1071: stwu r5,4(r6)
108 bdnz 1b
109
1107: cmpwi 0,r4,0
111 beqlr
112 mtctr r4
113 addi r6,r6,3
1148: stbu r5,1(r6)
115 bdnz 8b
116 blr
11790: mr r3,r4
118 blr
11991: mfctr r3
120 slwi r3,r3,2
121 add r3,r3,r4
122 blr
12392: mfctr r3
124 blr
125
126 EX_TABLE(11b, 90b)
127 EX_TABLE(1b, 91b)
128 EX_TABLE(8b, 92b)
129
130EXPORT_SYMBOL(__clear_user)
131#endif
132