diff options
author | Vegard Storheil Eriksen <zyp@jvnv.net> | 2021-01-22 01:13:44 +0100 |
---|---|---|
committer | Vegard Storheil Eriksen <zyp@jvnv.net> | 2021-01-22 01:13:44 +0100 |
commit | 1a38973eb8fd0f889f7c272e9ef183687034d550 (patch) | |
tree | a673e3eda50ee3ec1edbaf7534fafdd7073d1b47 /interrupt/vectors_nvic.cpp.j2 | |
parent | 36efee9187390a52a99919b900b8faaea49be928 (diff) |
interrupt: Refactor to be more flexible.
Diffstat (limited to 'interrupt/vectors_nvic.cpp.j2')
-rw-r--r-- | interrupt/vectors_nvic.cpp.j2 | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/interrupt/vectors_nvic.cpp.j2 b/interrupt/vectors_nvic.cpp.j2 index e4293f3..962efce 100644 --- a/interrupt/vectors_nvic.cpp.j2 +++ b/interrupt/vectors_nvic.cpp.j2 @@ -1,28 +1,26 @@ #include "interrupt.h" void entry(); -extern uint32_t _ram_end; - -typedef void (*vector_t)(); +extern int _ram_end; [[gnu::section(".vectors")]] -vector_t vectors[] = { - (vector_t)&_ram_end, +interrupt::vector_t vectors[] = { + (interrupt::vector_t)&_ram_end, entry, {% for i in range(2, 16) %} - {% if i in exceptions %} - interrupt<Exception::{{ exceptions[i] }}>, + {% if i in interrupts.exception %} + interrupt::handler<interrupt::exception::{{ interrupts.exception[i] }}>, {% else %} - 0, + 0, {% endif %} {% endfor %} - {% for i in range(irqs | max + 1 if irqs else 0) %} - {% if i in irqs %} - interrupt<IRQ::{{ irqs[i] }}>, + {% for i in range(interrupts.irq | max + 1 if interrupts.irq else 0) %} + {% if i in interrupts.irq %} + interrupt::handler<interrupt::irq::{{ interrupts.irq[i] }}>, {% else %} - 0, + 0, {% endif %} {% endfor %} }; |