X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcpu%2Ftypes.h;fp=bertos%2Fcpu%2Ftypes.h;h=08772a97daaa5b9f72799fa78122284d4f18f1eb;hb=f7f68ef253b16438a1676ab594e8f53f51dfe418;hp=d7e3e8bde0b2c08cb51951b4f5ec6282cf80210f;hpb=bd5d86e945779d6f76e6cf01b08cf1167480e964;p=bertos.git diff --git a/bertos/cpu/types.h b/bertos/cpu/types.h index d7e3e8bd..08772a97 100644 --- a/bertos/cpu/types.h +++ b/bertos/cpu/types.h @@ -233,4 +233,24 @@ STATIC_ASSERT(sizeof(cpu_stack_t) == SIZEOF_CPUSTACK_T); STATIC_ASSERT(sizeof(cpu_aligned_stack_t) == SIZEOF_CPUALIGNED_T); STATIC_ASSERT(sizeof(size_t) == SIZEOF_SIZE_T); + +/** + * Macros for hardware access, both direct and via the bit-band region. + */ +/*\{*/ +#define HWREG(x) (*((reg32_t *)(x))) +#define HWREGH(x) (*((reg16_t *)(x))) +#define HWREGB(x) (*((reg8_t *)(x))) + +#define HWREGBITW(x, b) \ + HWREG(((reg32_t)(x) & 0xF0000000) | 0x02000000 | \ + (((reg32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2)) +#define HWREGBITH(x, b) \ + HWREGH(((reg32_t)(x) & 0xF0000000) | 0x02000000 | \ + (((reg32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2)) +#define HWREGBITB(x, b) \ + HWREGB(((reg32_t)(x) & 0xF0000000) | 0x02000000 | \ + (((reg32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2)) +/*\}*/ + #endif /* CPU_TYPES_H */