aboutsummaryrefslogtreecommitdiff
path: root/armclock.h
diff options
context:
space:
mode:
Diffstat (limited to 'armclock.h')
-rw-r--r--armclock.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/armclock.h b/armclock.h
index 2b2aec9..f81f363 100644
--- a/armclock.h
+++ b/armclock.h
@@ -46,11 +46,21 @@ static inline void armclk_init(void)
static inline void armclk_enable_timer_irq(void)
{
+ armclk_control_t ctrl =
+ (armclk_control_t) *(uint32_t volatile*) ARMCLK_CONTROL;
+ ctrl.fields.interrupt_enable = 1;
+ *(uint32_t volatile*) ARMCLK_CONTROL = ctrl.raw;
+
*(uint32_t volatile*) 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;
+ ctrl.fields.interrupt_enable = 0;
+ *(uint32_t volatile*) ARMCLK_CONTROL = ctrl.raw;
+
*(uint32_t volatile*) ARM_DISABLE_BASIC_IRQS = 1;
}
@@ -62,7 +72,7 @@ static inline void armclk_irq_settimeout(uint32_t timeout)
static inline _Bool armclk_irq_pending(void)
{
- return *(uint32_t volatile*) ARMCLK_RAW_IRQ;
+ return *(uint32_t volatile*) ARM_IRQ_BASIC_PENDING & 1;
}
#endif // ARMCLOCK_H