2 Copyright © 1995-2011, The AROS Development Team. All rights reserved.
5 Desc: Add interrupt client to chain of interrupt servers
9 #include <aros/debug.h>
10 #include <aros/libcall.h>
11 #include <exec/execbase.h>
12 #include <exec/interrupts.h>
13 #include <hardware/intbits.h>
14 #include <proto/exec.h>
15 #include <proto/kernel.h>
17 #include "exec_intern.h"
20 static void krnIRQwrapper(void *data1
, void *data2
)
22 struct Interrupt
*irq
= (struct Interrupt
*)data1
;
24 AROS_INTC1(irq
->is_Code
, irq
->is_Data
);
27 /*****************************************************************************
31 AROS_LH2(void, AddIntServer
,
34 AROS_LHA(ULONG
, intNumber
, D0
),
35 AROS_LHA(struct Interrupt
*, interrupt
, A1
),
38 struct ExecBase
*, SysBase
, 28, Exec
)
47 This function also enables the corresponding chipset interrupt if
48 run on a native Amiga.
58 ******************************************************************************/
62 if (intNumber
>= INTB_KERNEL
) {
63 interrupt
->is_Node
.ln_Succ
= KrnAddIRQHandler(intNumber
- INTB_KERNEL
, krnIRQwrapper
, interrupt
, NULL
);
69 Enqueue((struct List
*)SysBase
->IntVects
[intNumber
].iv_Data
, &interrupt
->is_Node
);
70 CUSTOM_ENABLE(intNumber
);