[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCHv3 02/25] plat/include: Use macro-ed helper to simplify ioreg_read/write for Arm64
Hello Wei Chen, This patch looks good. Reviewed-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx> On the side note, checkpatch fails with an error."ERROR: need consistent spacing around '*' (ctx:WxV)". This seems to be a false positive in accordance to [2]. [2] https://groups.google.com/forum/#!topic/fa.linux.kernel/kDd31-wLOeY Thanks & Regards Sharan On 12/13/18 10:15 AM, Wei Chen wrote: As discussed in mailing list [1], we can use macro-ed helpers to avoid having to write 4 times of the same things of ioreg_read_8/16/32/64 and ioreg_write8/16/32/64. You have missed a reference. Signed-off-by: Wei Chen <wei.chen@xxxxxxx> --- plat/common/include/arm/arm64/cpu.h | 64 +++++++++++------------------ 1 file changed, 25 insertions(+), 39 deletions(-) diff --git a/plat/common/include/arm/arm64/cpu.h b/plat/common/include/arm/arm64/cpu.h index bfea461..53fa577 100644 --- a/plat/common/include/arm/arm64/cpu.h +++ b/plat/common/include/arm/arm64/cpu.h @@ -34,45 +34,31 @@#include <inttypes.h> -static inline uint8_t ioreg_read8(const volatile uint8_t *addr)-{ - return *addr; -} - -static inline void ioreg_write8(volatile uint8_t *addr, uint8_t value) -{ - *addr = value; -} - -static inline uint16_t ioreg_read16(const volatile uint16_t *addr) -{ - return *addr; -} - -static inline void ioreg_write16(volatile uint16_t *addr, uint16_t value) -{ - *addr = value; -} - -static inline uint32_t ioreg_read32(const volatile uint32_t *addr) -{ - return *addr; -} - -static inline void ioreg_write32(volatile uint32_t *addr, uint32_t value) -{ - *addr = value; -} - -static inline uint64_t ioreg_read64(const volatile uint64_t *addr) -{ - return *addr; -} - -static inline void ioreg_write64(volatile uint64_t *addr, uint64_t value) -{ - *addr = value; -} +/* Define macros to access IO registers */ +#define __IOREG_READ(bits) \ + static inline uint##bits##_t \ + ioreg_read##bits(const volatile uint##bits##_t *addr) \ + { return *addr; } + +#define __IOREG_WRITE(bits) \ + static inline void \ + ioreg_write##bits(volatile uint##bits##_t *addr, \ + uint##bits##_t value) \ + { *addr = value; } + + +#define __IOREG_READ_ALL() __IOREG_READ(8) \ + __IOREG_READ(16) \ + __IOREG_READ(32) \ + __IOREG_READ(64) \ + +#define __IOREG_WRITE_ALL() __IOREG_WRITE(8) \ + __IOREG_WRITE(16) \ + __IOREG_WRITE(32) \ + __IOREG_WRITE(64) \ + +__IOREG_READ_ALL() +__IOREG_WRITE_ALL()/* Define compatibility IO macros */#define outb(addr, v) UK_BUG() _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |