Bringing flexcat 2.15 into the main branch (again)
[AROS.git] / arch / m68k-amiga / cia / cia_interrupt.c
blob90703abfa65e76d503f75fc0cedb15d68cf18786
2 #include <exec/libraries.h>
3 #include <aros/asmcall.h>
4 #include <proto/cia.h>
5 #include <hardware/cia.h>
7 #include "cia_intern.h"
9 AROS_INTH1(Cia_Handler, struct CIABase *, CiaBase)
11 AROS_INTFUNC_INIT
13 UBYTE mask;
15 CiaBase->active_mask |= CiaBase->hw->ciaicr & 0x1f;
16 mask = CiaBase->enable_mask & CiaBase->active_mask;
18 if (mask) {
19 int i;
20 CiaBase->executing_mask = mask;
21 CiaBase->active_mask &= ~mask;
22 for (i = 0; i < VECTORS_NUM; i++) {
23 if (mask & (1 << i)) {
24 struct Interrupt *ciaint = CiaBase->Vectors[i];
25 if (ciaint) {
26 AROS_INTC1(ciaint->is_Code, ciaint->is_Data);
30 CiaBase->executing_mask = 0;
33 return FALSE;
35 AROS_INTFUNC_EXIT