diff options
author | Guo Ren <guoren@linux.alibaba.com> | 2022-04-06 21:32:22 +0800 |
---|---|---|
committer | Guo Ren <guoren@linux.alibaba.com> | 2022-04-18 21:23:55 +0800 |
commit | 8318f7c231d5be09e47410c5ab387b9bef6fe19e (patch) | |
tree | 0072d121bd5f7b4d5615e72a34d0b6ebb9841a98 /arch/csky/include/asm/io.h | |
parent | e4df2d5e852a7d24df3672ae9951eb79e179be08 (diff) | |
download | linux-8318f7c231d5be09e47410c5ab387b9bef6fe19e.tar.gz |
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/asm/io.h')
-rw-r--r-- | arch/csky/include/asm/io.h | 11 |
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) \ |