diff options
author | Tomasz Kramkowski <tk@the-tk.com> | 2016-10-20 23:43:29 +0100 |
---|---|---|
committer | Tomasz Kramkowski <tk@the-tk.com> | 2016-10-20 23:43:29 +0100 |
commit | c3c5f1e5fe27574220c3e94a79048e066cacc121 (patch) | |
tree | 445096a0365cc45c959091355852c9b63d8a338a /lib/reg/regdefs.h | |
download | fmk-c3c5f1e5fe27574220c3e94a79048e066cacc121.tar.gz fmk-c3c5f1e5fe27574220c3e94a79048e066cacc121.tar.xz fmk-c3c5f1e5fe27574220c3e94a79048e066cacc121.zip |
Init commit
Diffstat (limited to 'lib/reg/regdefs.h')
-rw-r--r-- | lib/reg/regdefs.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/reg/regdefs.h b/lib/reg/regdefs.h new file mode 100644 index 0000000..6a38c76 --- /dev/null +++ b/lib/reg/regdefs.h @@ -0,0 +1,25 @@ +#ifndef LIB_REG_REGDEFS_H +#define LIB_REG_REGDEFS_H + +#include <stdint.h> + +#define REG_8(a) (*(volatile uint8_t *)(a)) +#define REG_16(a) (*(volatile uint16_t *)(a)) +#define REG_32(a) (*(volatile uint32_t *)(a)) + +#define BV(b) (1 << (b)) +#define IS_BIT_SET(reg, bit) (!!((reg) & BV(bit))) +#define WAIT_BIT_UNSET(reg, bit) do { } while (IS_BIT_SET(reg, bit)) +#define WAIT_BIT_SET(reg, bit) do { } while (!IS_BIT_SET(reg, bit)) + +#define SET_BIT(reg, bit) ((reg) |= BV(bit)) +#define UNSET_BIT(reg, bit) ((reg) &= ~BV(bit)) + +#define GET_BIT(reg, bit) !!((reg) & BV(bit)) +#define GET_BITS(reg, offset) (((reg) & (offset ## _M)) >> (offset)) + +#define SET_MASKED(reg, mask, bits) ((reg) = ((reg) & ~(mask)) | ((bits) & (mask))) + +#define BITS(n) (0xffffffff >> (32 - (n))) + +#endif /* LIB_REG_REGDEFS_H */ |