diff options
author | Etienne Carriere <etienne.carriere@linaro.org> | 2019-02-12 17:45:09 +0100 |
---|---|---|
committer | Jérôme Forissier <jerome.forissier@linaro.org> | 2019-02-14 15:17:43 +0100 |
commit | b7d2b849d59b9cbbd0fc0cb01b5c3f2a862510ec (patch) | |
tree | 6b2b2e2aa4e312bc8bc7da539b75171a842eb9be /core/include | |
parent | 2d0c93dfdca1d82df424b9ef2edc3de55081545c (diff) |
libutil: io_clrsetbitsX() firends for 8bit and 16bit accesses
Introduce io_setbits8(), io_clrbits8(), io_clrsetbits8() and
io_setbits16(), io_clrbits16(), io_clrsetbits16() for bit clear/set
util over 8bit and 16bit memory cells on the model of existing
io_clrsetbits32() and friends.
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Diffstat (limited to 'core/include')
-rw-r--r-- | core/include/io.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/core/include/io.h b/core/include/io.h index 7970a362..26730b12 100644 --- a/core/include/io.h +++ b/core/include/io.h @@ -120,6 +120,38 @@ static inline void io_clrsetbits32(vaddr_t addr, uint32_t clear_mask, io_write32(addr, (io_read32(addr) & ~clear_mask) | set_mask); } +static inline void io_setbits16(vaddr_t addr, uint16_t set_mask) +{ + io_write16(addr, io_read16(addr) | set_mask); +} + +static inline void io_clrbits16(vaddr_t addr, uint16_t clear_mask) +{ + io_write16(addr, io_read16(addr) & ~clear_mask); +} + +static inline void io_clrsetbits16(vaddr_t addr, uint16_t clear_mask, + uint16_t set_mask) +{ + io_write16(addr, (io_read16(addr) & ~clear_mask) | set_mask); +} + +static inline void io_setbits8(vaddr_t addr, uint8_t set_mask) +{ + io_write8(addr, io_read8(addr) | set_mask); +} + +static inline void io_clrbits8(vaddr_t addr, uint8_t clear_mask) +{ + io_write8(addr, io_read8(addr) & ~clear_mask); +} + +static inline void io_clrsetbits8(vaddr_t addr, uint8_t clear_mask, + uint8_t set_mask) +{ + io_write8(addr, (io_read8(addr) & ~clear_mask) | set_mask); +} + /* * Functions write8(), write16(), write32(), read8(), read16() and read32() * will be deprecated in OP-TEE release 3.5.0. |