aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/include/asm/io.h9
-rw-r--r--arch/arm/kernel/armksyms.c6
-rw-r--r--arch/arm/lib/memcpy.S2
-rw-r--r--arch/arm/lib/memset.S2
4 files changed, 16 insertions, 3 deletions
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
index a5ed237c87d9..485982084fe9 100644
--- a/arch/arm/include/asm/io.h
+++ b/arch/arm/include/asm/io.h
@@ -316,21 +316,24 @@ extern void _memset_io(volatile void __iomem *, int, size_t);
316static inline void memset_io(volatile void __iomem *dst, unsigned c, 316static inline void memset_io(volatile void __iomem *dst, unsigned c,
317 size_t count) 317 size_t count)
318{ 318{
319 memset((void __force *)dst, c, count); 319 extern void mmioset(void *, unsigned int, size_t);
320 mmioset((void __force *)dst, c, count);
320} 321}
321#define memset_io(dst,c,count) memset_io(dst,c,count) 322#define memset_io(dst,c,count) memset_io(dst,c,count)
322 323
323static inline void memcpy_fromio(void *to, const volatile void __iomem *from, 324static inline void memcpy_fromio(void *to, const volatile void __iomem *from,
324 size_t count) 325 size_t count)
325{ 326{
326 memcpy(to, (const void __force *)from, count); 327 extern void mmiocpy(void *, const void *, size_t);
328 mmiocpy(to, (const void __force *)from, count);
327} 329}
328#define memcpy_fromio(to,from,count) memcpy_fromio(to,from,count) 330#define memcpy_fromio(to,from,count) memcpy_fromio(to,from,count)
329 331
330static inline void memcpy_toio(volatile void __iomem *to, const void *from, 332static inline void memcpy_toio(volatile void __iomem *to, const void *from,
331 size_t count) 333 size_t count)
332{ 334{
333 memcpy((void __force *)to, from, count); 335 extern void mmiocpy(void *, const void *, size_t);
336 mmiocpy((void __force *)to, from, count);
334} 337}
335#define memcpy_toio(to,from,count) memcpy_toio(to,from,count) 338#define memcpy_toio(to,from,count) memcpy_toio(to,from,count)
336 339
diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c
index a88671cfe1ff..5e5a51a99e68 100644
--- a/arch/arm/kernel/armksyms.c
+++ b/arch/arm/kernel/armksyms.c
@@ -50,6 +50,9 @@ extern void __aeabi_ulcmp(void);
50 50
51extern void fpundefinstr(void); 51extern void fpundefinstr(void);
52 52
53void mmioset(void *, unsigned int, size_t);
54void mmiocpy(void *, const void *, size_t);
55
53 /* platform dependent support */ 56 /* platform dependent support */
54EXPORT_SYMBOL(arm_delay_ops); 57EXPORT_SYMBOL(arm_delay_ops);
55 58
@@ -88,6 +91,9 @@ EXPORT_SYMBOL(memmove);
88EXPORT_SYMBOL(memchr); 91EXPORT_SYMBOL(memchr);
89EXPORT_SYMBOL(__memzero); 92EXPORT_SYMBOL(__memzero);
90 93
94EXPORT_SYMBOL(mmioset);
95EXPORT_SYMBOL(mmiocpy);
96
91#ifdef CONFIG_MMU 97#ifdef CONFIG_MMU
92EXPORT_SYMBOL(copy_page); 98EXPORT_SYMBOL(copy_page);
93 99
diff --git a/arch/arm/lib/memcpy.S b/arch/arm/lib/memcpy.S
index 7797e81e40e0..64111bd4440b 100644
--- a/arch/arm/lib/memcpy.S
+++ b/arch/arm/lib/memcpy.S
@@ -61,8 +61,10 @@
61 61
62/* Prototype: void *memcpy(void *dest, const void *src, size_t n); */ 62/* Prototype: void *memcpy(void *dest, const void *src, size_t n); */
63 63
64ENTRY(mmiocpy)
64ENTRY(memcpy) 65ENTRY(memcpy)
65 66
66#include "copy_template.S" 67#include "copy_template.S"
67 68
68ENDPROC(memcpy) 69ENDPROC(memcpy)
70ENDPROC(mmiocpy)
diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S
index a4ee97b5a2bf..3c65e3bd790f 100644
--- a/arch/arm/lib/memset.S
+++ b/arch/arm/lib/memset.S
@@ -16,6 +16,7 @@
16 .text 16 .text
17 .align 5 17 .align 5
18 18
19ENTRY(mmioset)
19ENTRY(memset) 20ENTRY(memset)
20UNWIND( .fnstart ) 21UNWIND( .fnstart )
21 ands r3, r0, #3 @ 1 unaligned? 22 ands r3, r0, #3 @ 1 unaligned?
@@ -133,3 +134,4 @@ UNWIND( .fnstart )
133 b 1b 134 b 1b
134UNWIND( .fnend ) 135UNWIND( .fnend )
135ENDPROC(memset) 136ENDPROC(memset)
137ENDPROC(mmioset)