aboutsummaryrefslogtreecommitdiff
path: root/core/include
diff options
context:
space:
mode:
authorEtienne Carriere <etienne.carriere@linaro.org>2019-02-12 17:45:09 +0100
committerJérôme Forissier <jerome.forissier@linaro.org>2019-02-14 15:17:43 +0100
commitb7d2b849d59b9cbbd0fc0cb01b5c3f2a862510ec (patch)
tree6b2b2e2aa4e312bc8bc7da539b75171a842eb9be /core/include
parent2d0c93dfdca1d82df424b9ef2edc3de55081545c (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.h32
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.