diff options
author | Wojtek Kosior <kwojtus@protonmail.com> | 2020-01-03 17:08:06 +0100 |
---|---|---|
committer | Wojtek Kosior <kwojtus@protonmail.com> | 2020-01-03 17:08:06 +0100 |
commit | 814d4a5357d849c4988422d48afa4aaa5432ce78 (patch) | |
tree | 77f4a169332f017873e64dcadbd7ed3467140c3f /armclock.h | |
parent | 42ad29d6475cc63797be5042b90e8b09fc8d93b9 (diff) | |
download | rpi-MMU-example-814d4a5357d849c4988422d48afa4aaa5432ce78.tar.gz rpi-MMU-example-814d4a5357d849c4988422d48afa4aaa5432ce78.zip |
write to peripheral registers like humans
Diffstat (limited to 'armclock.h')
-rw-r--r-- | armclock.h | 22 |
1 files changed, 10 insertions, 12 deletions
@@ -41,38 +41,36 @@ static inline void armclk_init(void) ctrl.fields.timer_enable = 1; ctrl.fields.interrupt_enable = 1; ctrl.fields.counter_23bit = 1; - *(uint32_t volatile*) ARMCLK_CONTROL = ctrl.raw; + wr32(ARMCLK_CONTROL, ctrl.raw); } static inline void armclk_enable_timer_irq(void) { - armclk_control_t ctrl = - (armclk_control_t) *(uint32_t volatile*) ARMCLK_CONTROL; + armclk_control_t ctrl = (armclk_control_t) rd32(ARMCLK_CONTROL); ctrl.fields.interrupt_enable = 1; - *(uint32_t volatile*) ARMCLK_CONTROL = ctrl.raw; + wr32(ARMCLK_CONTROL, ctrl.raw); - *(uint32_t volatile*) ARM_ENABLE_BASIC_IRQS = 1; + wr32(ARM_ENABLE_BASIC_IRQS, 1); } static inline void armclk_disable_timer_irq(void) { - armclk_control_t ctrl = - (armclk_control_t) *(uint32_t volatile*) ARMCLK_CONTROL; + armclk_control_t ctrl = (armclk_control_t) rd32(ARMCLK_CONTROL); ctrl.fields.interrupt_enable = 0; - *(uint32_t volatile*) ARMCLK_CONTROL = ctrl.raw; + wr32(ARMCLK_CONTROL, ctrl.raw); - *(uint32_t volatile*) ARM_DISABLE_BASIC_IRQS = 1; + wr32(ARM_DISABLE_BASIC_IRQS, 1); } static inline void armclk_irq_settimeout(uint32_t timeout) { - *(uint32_t volatile*) ARMCLK_IRQ_CLR_ACK = 0; - *(uint32_t volatile*) ARMCLK_LOAD = timeout; + wr32(ARMCLK_IRQ_CLR_ACK, 0); + wr32(ARMCLK_LOAD, timeout); } static inline _Bool armclk_irq_pending(void) { - return *(uint32_t volatile*) ARM_IRQ_BASIC_PENDING & 1; + return rd32(ARM_IRQ_BASIC_PENDING) & 1; } #endif // ARMCLOCK_H |