diff options
Diffstat (limited to 'arch/cris/arch-v10')
-rw-r--r-- | arch/cris/arch-v10/lib/memset.c | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/arch/cris/arch-v10/lib/memset.c b/arch/cris/arch-v10/lib/memset.c index 82bb66839171..42c1101043a3 100644 --- a/arch/cris/arch-v10/lib/memset.c +++ b/arch/cris/arch-v10/lib/memset.c | |||
@@ -66,7 +66,7 @@ void *memset(void *pdst, | |||
66 | 66 | ||
67 | { | 67 | { |
68 | register char *dst __asm__ ("r13") = pdst; | 68 | register char *dst __asm__ ("r13") = pdst; |
69 | 69 | ||
70 | /* This is NONPORTABLE, but since this whole routine is */ | 70 | /* This is NONPORTABLE, but since this whole routine is */ |
71 | /* grossly nonportable that doesn't matter. */ | 71 | /* grossly nonportable that doesn't matter. */ |
72 | 72 | ||
@@ -110,52 +110,52 @@ void *memset(void *pdst, | |||
110 | If you want to check that the allocation was right; then | 110 | If you want to check that the allocation was right; then |
111 | check the equalities in the first comment. It should say | 111 | check the equalities in the first comment. It should say |
112 | "r13=r13, r12=r12, r11=r11" */ | 112 | "r13=r13, r12=r12, r11=r11" */ |
113 | __asm__ volatile (" | 113 | __asm__ volatile ("\n\ |
114 | ;; Check that the following is true (same register names on | 114 | ;; Check that the following is true (same register names on \n\ |
115 | ;; both sides of equal sign, as in r8=r8): | 115 | ;; both sides of equal sign, as in r8=r8): \n\ |
116 | ;; %0=r13, %1=r12, %4=r11 | 116 | ;; %0=r13, %1=r12, %4=r11 \n\ |
117 | ;; | 117 | ;; \n\ |
118 | ;; Save the registers we'll clobber in the movem process | 118 | ;; Save the registers we'll clobber in the movem process \n\ |
119 | ;; on the stack. Don't mention them to gcc, it will only be | 119 | ;; on the stack. Don't mention them to gcc, it will only be \n\ |
120 | ;; upset. | 120 | ;; upset. \n\ |
121 | subq 11*4,$sp | 121 | subq 11*4,$sp \n\ |
122 | movem $r10,[$sp] | 122 | movem $r10,[$sp] \n\ |
123 | 123 | \n\ | |
124 | move.d $r11,$r0 | 124 | move.d $r11,$r0 \n\ |
125 | move.d $r11,$r1 | 125 | move.d $r11,$r1 \n\ |
126 | move.d $r11,$r2 | 126 | move.d $r11,$r2 \n\ |
127 | move.d $r11,$r3 | 127 | move.d $r11,$r3 \n\ |
128 | move.d $r11,$r4 | 128 | move.d $r11,$r4 \n\ |
129 | move.d $r11,$r5 | 129 | move.d $r11,$r5 \n\ |
130 | move.d $r11,$r6 | 130 | move.d $r11,$r6 \n\ |
131 | move.d $r11,$r7 | 131 | move.d $r11,$r7 \n\ |
132 | move.d $r11,$r8 | 132 | move.d $r11,$r8 \n\ |
133 | move.d $r11,$r9 | 133 | move.d $r11,$r9 \n\ |
134 | move.d $r11,$r10 | 134 | move.d $r11,$r10 \n\ |
135 | 135 | \n\ | |
136 | ;; Now we've got this: | 136 | ;; Now we've got this: \n\ |
137 | ;; r13 - dst | 137 | ;; r13 - dst \n\ |
138 | ;; r12 - n | 138 | ;; r12 - n \n\ |
139 | 139 | \n\ | |
140 | ;; Update n for the first loop | 140 | ;; Update n for the first loop \n\ |
141 | subq 12*4,$r12 | 141 | subq 12*4,$r12 \n\ |
142 | 0: | 142 | 0: \n\ |
143 | subq 12*4,$r12 | 143 | subq 12*4,$r12 \n\ |
144 | bge 0b | 144 | bge 0b \n\ |
145 | movem $r11,[$r13+] | 145 | movem $r11,[$r13+] \n\ |
146 | 146 | \n\ | |
147 | addq 12*4,$r12 ;; compensate for last loop underflowing n | 147 | addq 12*4,$r12 ;; compensate for last loop underflowing n \n\ |
148 | 148 | \n\ | |
149 | ;; Restore registers from stack | 149 | ;; Restore registers from stack \n\ |
150 | movem [$sp+],$r10" | 150 | movem [$sp+],$r10" |
151 | 151 | ||
152 | /* Outputs */ : "=r" (dst), "=r" (n) | 152 | /* Outputs */ : "=r" (dst), "=r" (n) |
153 | /* Inputs */ : "0" (dst), "1" (n), "r" (lc)); | 153 | /* Inputs */ : "0" (dst), "1" (n), "r" (lc)); |
154 | 154 | ||
155 | } | 155 | } |
156 | 156 | ||
157 | /* Either we directly starts copying, using dword copying | 157 | /* Either we directly starts copying, using dword copying |
158 | in a loop, or we copy as much as possible with 'movem' | 158 | in a loop, or we copy as much as possible with 'movem' |
159 | and then the last block (<44 bytes) is copied here. | 159 | and then the last block (<44 bytes) is copied here. |
160 | This will work since 'movem' will have updated src,dst,n. */ | 160 | This will work since 'movem' will have updated src,dst,n. */ |
161 | 161 | ||