summaryrefslogtreecommitdiffstats
path: root/arch/csky/include
diff options
context:
space:
mode:
authorGuo Ren <guoren@linux.alibaba.com>2022-04-06 21:32:22 +0800
committerGuo Ren <guoren@linux.alibaba.com>2022-04-18 21:23:55 +0800
commit8318f7c231d5be09e47410c5ab387b9bef6fe19e (patch)
tree0072d121bd5f7b4d5615e72a34d0b6ebb9841a98 /arch/csky/include
parente4df2d5e852a7d24df3672ae9951eb79e179be08 (diff)
downloadlinux-stable-8318f7c231d5be09e47410c5ab387b9bef6fe19e.tar.gz
linux-stable-8318f7c231d5be09e47410c5ab387b9bef6fe19e.tar.bz2
linux-stable-8318f7c231d5be09e47410c5ab387b9bef6fe19e.zip
csky: optimize memcpy_{from,to}io() and memset_io()
Optimize memcpy_{from,to}io() and memset_io() by transferring in 64 bit as much as possible with minimized barrier usage. This simplest optimization brings faster throughput compare to current byte-by-byte read and write with barrier in the loop. Code's skeleton is taken from the powerpc & arm64. Signed-off-by: Guo Ren <guoren@linux.alibaba.com> Signed-off-by: Guo Ren <guoren@kernel.org>
Diffstat (limited to 'arch/csky/include')
-rw-r--r--arch/csky/include/asm/io.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/csky/include/asm/io.h b/arch/csky/include/asm/io.h
index ed53f0b47388..4725bb977b0f 100644
--- a/arch/csky/include/asm/io.h
+++ b/arch/csky/include/asm/io.h
@@ -32,6 +32,17 @@
#endif
/*
+ * String version of I/O memory access operations.
+ */
+extern void __memcpy_fromio(void *, const volatile void __iomem *, size_t);
+extern void __memcpy_toio(volatile void __iomem *, const void *, size_t);
+extern void __memset_io(volatile void __iomem *, int, size_t);
+
+#define memset_io(c,v,l) __memset_io((c),(v),(l))
+#define memcpy_fromio(a,c,l) __memcpy_fromio((a),(c),(l))
+#define memcpy_toio(c,a,l) __memcpy_toio((c),(a),(l))
+
+/*
* I/O memory mapping functions.
*/
#define ioremap_wc(addr, size) \