!!hot!! | Ivthandleinterrupt

_ivt_stub_timer: push r0-r3, r12, lr bl ivthandleinterrupt ; call C dispatcher pop r0-r3, r12, lr subs pc, lr, #4 And in C, the dispatcher:

; Vector table entry for IRQ0 (system timer) .word _ivt_stub_timer ... The stub might look like: ivthandleinterrupt

| Architecture/RTOS | Typical Dispatcher Name | |-------------------|--------------------------| | ARM CMSIS | IRQ_Handler or UART_IRQHandler (weak-linked) | | Linux kernel | do_IRQ() or handle_irq_event() | | FreeRTOS | vPortSVCHandler , xPortPendSVHandler | | ThreadX | _tx_thread_irq_control + custom dispatch | | Legacy custom BSP | | _ivt_stub_timer: push r0-r3, r12, lr bl ivthandleinterrupt ;

But a more robust ivthandleinterrupt would query the hardware: _ivt_stub_timer: push r0-r3

// Array of registered interrupt callbacks static void (*isr_table[MAX_IRQS])(void); void register_isr(int irq_num, void (*handler)(void)) if (irq_num < MAX_IRQS) isr_table[irq_num] = handler;