summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm64/include/asm/io.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/arm64/include/asm/io.h b/arch/arm64/include/asm/io.h
index 1d499d81ffb9..eea245bf546a 100644
--- a/arch/arm64/include/asm/io.h
+++ b/arch/arm64/include/asm/io.h
@@ -108,10 +108,11 @@ static inline u64 __raw_readq_no_log(const volatile void __iomem *addr)
#define __raw_write_logged(v, a, _t) ({ \
int _ret; \
- void *_addr = (void *)(a); \
+ volatile void __iomem *_a = (a); \
+ void *_addr = (void __force *)(_a); \
_ret = uncached_logk(LOGK_WRITEL, _addr); \
ETB_WAYPOINT; \
- __raw_write##_t##_no_log((v), _addr); \
+ __raw_write##_t##_no_log((v), _a); \
if (_ret) \
LOG_BARRIER; \
})
@@ -123,11 +124,12 @@ static inline u64 __raw_readq_no_log(const volatile void __iomem *addr)
#define __raw_read_logged(a, _l, _t) ({ \
_t __a; \
- void *_addr = (void *)(a); \
+ const volatile void __iomem *_a = (const volatile void __iomem *)(a); \
+ void *_addr = (void __force *)(_a); \
int _ret; \
_ret = uncached_logk(LOGK_READL, _addr); \
ETB_WAYPOINT; \
- __a = __raw_read##_l##_no_log(_addr); \
+ __a = __raw_read##_l##_no_log(_a); \
if (_ret) \
LOG_BARRIER; \
__a; \