diff options
Diffstat (limited to 'arch/tile/lib/memcpy_64.c')
-rw-r--r-- | arch/tile/lib/memcpy_64.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/arch/tile/lib/memcpy_64.c b/arch/tile/lib/memcpy_64.c index 3fab9a6a2bbe..c79b8e7c6828 100644 --- a/arch/tile/lib/memcpy_64.c +++ b/arch/tile/lib/memcpy_64.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/types.h> | 15 | #include <linux/types.h> |
16 | #include <linux/string.h> | 16 | #include <linux/string.h> |
17 | #include <linux/module.h> | 17 | #include <linux/module.h> |
18 | #define __memcpy memcpy | ||
19 | /* EXPORT_SYMBOL() is in arch/tile/lib/exports.c since this should be asm. */ | 18 | /* EXPORT_SYMBOL() is in arch/tile/lib/exports.c since this should be asm. */ |
20 | 19 | ||
21 | /* Must be 8 bytes in size. */ | 20 | /* Must be 8 bytes in size. */ |
@@ -188,6 +187,7 @@ int USERCOPY_FUNC(void *__restrict dstv, const void *__restrict srcv, size_t n) | |||
188 | 187 | ||
189 | /* n != 0 if we get here. Write out any trailing bytes. */ | 188 | /* n != 0 if we get here. Write out any trailing bytes. */ |
190 | dst1 = (char *)dst8; | 189 | dst1 = (char *)dst8; |
190 | #ifndef __BIG_ENDIAN__ | ||
191 | if (n & 4) { | 191 | if (n & 4) { |
192 | ST4((uint32_t *)dst1, final); | 192 | ST4((uint32_t *)dst1, final); |
193 | dst1 += 4; | 193 | dst1 += 4; |
@@ -202,11 +202,30 @@ int USERCOPY_FUNC(void *__restrict dstv, const void *__restrict srcv, size_t n) | |||
202 | } | 202 | } |
203 | if (n) | 203 | if (n) |
204 | ST1((uint8_t *)dst1, final); | 204 | ST1((uint8_t *)dst1, final); |
205 | #else | ||
206 | if (n & 4) { | ||
207 | ST4((uint32_t *)dst1, final >> 32); | ||
208 | dst1 += 4; | ||
209 | } | ||
210 | else | ||
211 | { | ||
212 | final >>= 32; | ||
213 | } | ||
214 | if (n & 2) { | ||
215 | ST2((uint16_t *)dst1, final >> 16); | ||
216 | dst1 += 2; | ||
217 | } | ||
218 | else | ||
219 | { | ||
220 | final >>= 16; | ||
221 | } | ||
222 | if (n & 1) | ||
223 | ST1((uint8_t *)dst1, final >> 8); | ||
224 | #endif | ||
205 | 225 | ||
206 | return RETVAL; | 226 | return RETVAL; |
207 | } | 227 | } |
208 | 228 | ||
209 | |||
210 | #ifdef USERCOPY_FUNC | 229 | #ifdef USERCOPY_FUNC |
211 | #undef ST1 | 230 | #undef ST1 |
212 | #undef ST2 | 231 | #undef ST2 |