Commit b8f7918f authored by Paul Mundt's avatar Paul Mundt

sh: Provide uncached I/O helpers.

There are lots of registers that can only be updated from the uncached
mapping, so we add some helpers for those cases in order to make it
easier to ensure that we only make the jump when it's absolutely
necessary.
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent d53a0d33
...@@ -133,6 +133,28 @@ static inline void ctrl_delay(void) ...@@ -133,6 +133,28 @@ static inline void ctrl_delay(void)
__raw_readw(generic_io_base); __raw_readw(generic_io_base);
} }
#define __BUILD_UNCACHED_IO(bwlq, type) \
static inline type read##bwlq##_uncached(unsigned long addr) \
{ \
type ret; \
jump_to_uncached(); \
ret = __raw_read##bwlq(addr); \
back_to_cached(); \
return ret; \
} \
\
static inline void write##bwlq##_uncached(type v, unsigned long addr) \
{ \
jump_to_uncached(); \
__raw_write##bwlq(v, addr); \
back_to_cached(); \
}
__BUILD_UNCACHED_IO(b, u8)
__BUILD_UNCACHED_IO(w, u16)
__BUILD_UNCACHED_IO(l, u32)
__BUILD_UNCACHED_IO(q, u64)
#define __BUILD_MEMORY_STRING(bwlq, type) \ #define __BUILD_MEMORY_STRING(bwlq, type) \
\ \
static inline void __raw_writes##bwlq(volatile void __iomem *mem, \ static inline void __raw_writes##bwlq(volatile void __iomem *mem, \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment