diff options
author | Vegard Storheil Eriksen <zyp@jvnv.net> | 2021-01-16 01:25:21 +0100 |
---|---|---|
committer | Vegard Storheil Eriksen <zyp@jvnv.net> | 2021-01-16 01:25:21 +0100 |
commit | 172d694cf7ba582635ac38454bad0f0fdaa14773 (patch) | |
tree | efb0d145ed7fb3eeb44541714568680a6451ab3d /interrupt/vectors_nvic.cpp.j2 | |
parent | 9921c9db409ad5b00fe4a43a2459e2fd2de6b0cf (diff) |
interrupt: Generate interrupts from platform spec.
Diffstat (limited to 'interrupt/vectors_nvic.cpp.j2')
-rw-r--r-- | interrupt/vectors_nvic.cpp.j2 | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/interrupt/vectors_nvic.cpp.j2 b/interrupt/vectors_nvic.cpp.j2 new file mode 100644 index 0000000..e4293f3 --- /dev/null +++ b/interrupt/vectors_nvic.cpp.j2 @@ -0,0 +1,28 @@ +#include "interrupt.h" + +void entry(); +extern uint32_t _ram_end; + +typedef void (*vector_t)(); + +[[gnu::section(".vectors")]] +vector_t vectors[] = { + (vector_t)&_ram_end, + entry, + + {% for i in range(2, 16) %} + {% if i in exceptions %} + interrupt<Exception::{{ exceptions[i] }}>, + {% else %} + 0, + {% endif %} + {% endfor %} + + {% for i in range(irqs | max + 1 if irqs else 0) %} + {% if i in irqs %} + interrupt<IRQ::{{ irqs[i] }}>, + {% else %} + 0, + {% endif %} + {% endfor %} +}; |