diff options
author | Ilias Apalodimas <ilias.apalodimas@linaro.org> | 2017-10-16 19:09:30 +0300 |
---|---|---|
committer | Ilias Apalodimas <ilias.apalodimas@linaro.org> | 2017-10-16 19:09:30 +0300 |
commit | eed556eede3bc2dfdfb0a0d6394709401d13a835 (patch) | |
tree | 87dddca8d6fecad2205c336c45cb3466428e59bd | |
parent | a6ef583b28c5a6382d56c6baf4a3b5369beff007 (diff) |
Added API for accessing iomem. We'll probably need barriers for that
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
-rw-r--r-- | include/reg_api.h | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/include/reg_api.h b/include/reg_api.h new file mode 100644 index 0000000..c650533 --- /dev/null +++ b/include/reg_api.h @@ -0,0 +1,94 @@ +#ifndef _REG_API_H +#define _REG_API_H +#include <stdio.h> +#include <stdint.h> + +static inline uint8_t io_read8_relaxed(const volatile void *addr) +{ + return *(const volatile uint8_t *)addr; +} + +static inline uint16_t io_read16_relaxed(const volatile void *addr) +{ + return *(const volatile uint16_t *)addr; +} + +static inline uint32_t io_read32_relaxed(const volatile void *addr) +{ + return *(const volatile uint32_t *)addr; +} + +static inline uint64_t io_read64_relaxed(const volatile void *addr) +{ + return *(const volatile uint64_t *)addr; +} + +static inline void io_write8_relaxed(uint8_t value, volatile void *addr) +{ + *(volatile uint8_t *)addr = value; +} + +static inline void io_write16_relaxed(uint16_t value, volatile void *addr) +{ + *(volatile uint16_t *)addr = value; +} + +static inline void io_write32_relaxed(uint32_t value, volatile void *addr) +{ + *(volatile uint32_t *)addr = value; +} + +static inline void io_write64_relaxed(uint64_t value, volatile void *addr) +{ + *(volatile uint64_t *)addr = value; +} + +static inline uint8_t io_read8(const volatile void *addr) +{ + uint8_t val; + val = io_read8_relaxed(addr); + return val; +} + +static inline uint16_t io_read16(const volatile void *addr) +{ + uint16_t val; + val = io_read16_relaxed(addr); + return val; +} + +static inline uint32_t io_read32(const volatile void *addr) +{ + uint32_t val; + val = io_read32_relaxed(addr); + return val; +} + +static inline uint64_t io_read64(const volatile void *addr) +{ + uint64_t val; + val = io_read64_relaxed(addr); + return val; +} + +static inline void io_write8(uint8_t value, volatile void *addr) +{ + io_write8_relaxed(value, addr); +} + +static inline void io_write16(uint16_t value, volatile void *addr) +{ + io_write16_relaxed(value, addr); +} + +static inline void io_write32(uint32_t value, volatile void *addr) +{ + io_write32_relaxed(value, addr); +} + +static inline void io_write64(uint64_t value, volatile void *addr) +{ + io_write64_relaxed(value, addr); +} + +#endif |