#include "interrupt.h" namespace Interrupt { MFP mf_vectors[16 + NUM_IRQs]; }; void entry(); void member_function_interrupt_gate() { uint32_t interrupt_num; asm ("mrs %0, ipsr" : "=r" (interrupt_num)); Interrupt::mf_vectors[interrupt_num].func_p(Interrupt::mf_vectors[interrupt_num].instance_p); } extern "C" void unused_interrupt() { member_function_interrupt_gate(); //while(1); } template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); template<> void interrupt() __attribute__ ((weak, alias ("unused_interrupt"))); typedef void (*vector_t)(); vector_t vectors[] __attribute__((section(".vectors"))) = { (vector_t)0x20004ffc, entry, interrupt, interrupt, interrupt, interrupt, interrupt, 0, 0, 0, 0, interrupt, 0, 0, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, interrupt, 0, // 60 0, // 61 0, // 62 0, // 63 0, // 64 0, // 65 0, // 66 0, // 67 0, // 68 0, // 69 0, // 70 0, // 71 0, // 72 0, // 73 0, // 74 0, // 75 0, // 76 interrupt<(Interrupt::IRQ)77>, // 77 };