void irq_handler(registers_t regs) { if (regs.int_no >= IRQ8) { outb(PORT_PIC2, SIGNAL_EOI); } outb(PORT_PIC1, SIGNAL_EOI); isr_handler(regs); }
void interrupt_handler(struct interrupt_context* int_ctx) { if ( int_ctx->int_no < 32 ) isr_handler(int_ctx); else if ( 32 <= int_ctx->int_no && int_ctx->int_no < 32 + 16 ) irq_handler(int_ctx); }
void irq_handler( struct regs regs ) { /* send EOI to the PIC */ if (regs.int_no >= 40) outb( 0xa0, 0x20 ); // reset slave PIC outb( 0x20, 0x20 ); // reset master PIC isr_handler( regs ); }
void irq_handler(const interrupt_info_t info) { if (info.id >= INTERRUPT_IRQ_CMOS_CLOCK) { io_write_ui8(PIC_SLAVE_COMMAND, PIC_OCW2_EOI); io_wait(); } io_write_ui8(PIC_MASTER_COMMAND, PIC_OCW2_EOI); io_wait(); // Just handle stuff in the ISR handler. isr_handler(info); }
static void *isr_thread(void *data) { l4irq_t *irq; (void)data; if (!(irq = l4irq_attach(IRQ_NO))) return NULL; while (1) { if (l4irq_wait(irq)) continue; isr_handler(); } return NULL; }
void UART_0_ISR(void) { isr_handler(0); }
ISR(UART_3_ISR, ISR_BLOCK) { isr_handler(3); }
void __attribute__((interrupt("IRQ"))) tim_isr_0(void) { isr_handler(TMR0, 0); }
ISR(UART_1_ISR, ISR_BLOCK) { isr_handler(1); }
ISR(UART_2_ISR, ISR_BLOCK) { isr_handler(2); }
void TIMER_1_ISR(void) { isr_handler(1); }
ISR(PORT2_VECTOR, isr_port2) { __enter_isr(); isr_handler((msp_port_isr_t *)PORT_2, 8); __exit_isr(); }
void UART_3_ISR(void) { isr_handler(3); }
void UART_1_ISR(void) { isr_handler(1); }
void __attribute__((interrupt("IRQ"))) tim_isr_1(void) { isr_handler(TMR1, 1); }
void __attribute__((interrupt("IRQ"))) tim_isr_2(void) { isr_handler(TMR2, 2); }
void __attribute__((interrupt("IRQ"))) tim_isr_3(void) { isr_handler(TMR3, 3); }
void UART_2_ISR(void) { isr_handler(2); }
void TIMER_3_ISR(void) { isr_handler(3); }
void TIMER_0_ISR(void) { isr_handler(0); }
ISR(UART_0_ISR, ISR_BLOCK) { isr_handler(0); }
void TIMER_2_ISR(void) { isr_handler(2); }
ISR(PORT1_VECTOR, isr_port1) { __enter_isr(); isr_handler((msp_port_isr_t *)PORT_1, 0); __exit_isr(); }