2 Copyright © 1995-2001, The AROS Development Team. All rights reserved.
5 Desc: Install an interrupt handler.
8 #include <exec/execbase.h>
9 #include <exec/interrupts.h>
10 #include <proto/exec.h>
11 #include <aros/libcall.h>
13 #include "exec_debug.h"
15 /*****************************************************************************
19 AROS_LH2(struct Interrupt
*, SetIntVector
,
22 AROS_LHA(ULONG
, intNumber
, D0
),
23 AROS_LHA(struct Interrupt
*, interrupt
, A1
),
26 struct ExecBase
*, SysBase
, 27, Exec
)
44 ******************************************************************************/
47 struct Interrupt
*oldint
;
48 BOOL ishandler
= intNumber
<= 2 || (intNumber
>= 6 && intNumber
<= 12);
50 ExecLog(SysBase
, EXECDEBUGF_EXCEPTHANDLER
, "SetIntVector: Int %d, Interrupt %p\n", intNumber
, interrupt
);
54 oldint
= (struct Interrupt
*)SysBase
->IntVects
[intNumber
].iv_Node
;
55 SysBase
->IntVects
[intNumber
].iv_Node
= ishandler
? (struct Node
*)interrupt
: NULL
;
59 SysBase
->IntVects
[intNumber
].iv_Data
= interrupt
->is_Data
;
60 SysBase
->IntVects
[intNumber
].iv_Code
= interrupt
->is_Code
;
64 SysBase
->IntVects
[intNumber
].iv_Data
= (APTR
)~0;
65 SysBase
->IntVects
[intNumber
].iv_Code
= (void *)~0;