summaryrefslogtreecommitdiff
path: root/interrupt/vectors_nvic.cpp.j2
diff options
context:
space:
mode:
authorVegard Storheil Eriksen <zyp@jvnv.net>2021-01-22 01:13:44 +0100
committerVegard Storheil Eriksen <zyp@jvnv.net>2021-01-22 01:13:44 +0100
commit1a38973eb8fd0f889f7c272e9ef183687034d550 (patch)
treea673e3eda50ee3ec1edbaf7534fafdd7073d1b47 /interrupt/vectors_nvic.cpp.j2
parent36efee9187390a52a99919b900b8faaea49be928 (diff)
interrupt: Refactor to be more flexible.
Diffstat (limited to 'interrupt/vectors_nvic.cpp.j2')
-rw-r--r--interrupt/vectors_nvic.cpp.j222
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 %}
};