{
/* Enable the IRQ line (only for generic IRQs) */
if (irq >= 16 && irq < 48)
- HWREG(NVIC_EN0) = 1 << (irq - 16);
+ NVIC_EN0_R = 1 << (irq - 16);
else if (irq >= 48)
- HWREG(NVIC_EN1) = 1 << (irq - 48);
+ NVIC_EN1_R = 1 << (irq - 48);
}
void sysirq_setHandler(sysirq_t irq, sysirq_handler_t handler)
irq_table[i] = unhandled_isr;
/* Update NVIC to point to the new vector table */
- HWREG(NVIC_VTABLE) = (size_t)irq_table;
+ NVIC_VTABLE_R = (size_t)irq_table;
IRQ_RESTORE(flags);
}
INLINE void timer_hw_setPeriod(unsigned long period)
{
ASSERT(period < (1 << 24));
- HWREG(NVIC_ST_RELOAD) = period - 1;
+ NVIC_ST_RELOAD_R = period - 1;
}
static void timer_hw_enable(void)
{
- HWREG(NVIC_ST_CTRL) |=
+ NVIC_ST_CTRL_R |=
NVIC_ST_CTRL_CLK_SRC | NVIC_ST_CTRL_ENABLE | NVIC_ST_CTRL_INTEN;
}
static void timer_hw_disable(void)
{
- HWREG(NVIC_ST_CTRL) &= ~(NVIC_ST_CTRL_ENABLE | NVIC_ST_CTRL_INTEN);
+ NVIC_ST_CTRL_R &= ~(NVIC_ST_CTRL_ENABLE | NVIC_ST_CTRL_INTEN);
}
void timer_hw_init(void)