diff options
| -rw-r--r-- | arch/arm64/include/asm/io.h | 10 |
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; \ |
