revert between 56095 -> 55830 in arch
[AROS.git] / rom / exec / remintserver.c
blobca54fbce63e2da1d7bb1ace1f1d29f08e2d0776b
1 /*
2 Copyright © 1995-2017, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc: Remove an interrupt handler.
6 Lang:
7 */
9 #include <exec/execbase.h>
10 #include <exec/interrupts.h>
11 #include <hardware/intbits.h>
12 #include <proto/exec.h>
13 #include <aros/libcall.h>
15 #include "exec_intern.h"
16 #include "exec_debug.h"
17 #include "chipset.h"
18 #include "exec_locks.h"
20 /*****************************************************************************
22 NAME */
24 AROS_LH2(void, RemIntServer,
26 /* SYNOPSIS */
27 AROS_LHA(ULONG, intNumber, D0),
28 AROS_LHA(struct Interrupt *, interrupt, A1),
30 /* LOCATION */
31 struct ExecBase *, SysBase, 29, Exec)
33 /* FUNCTION
35 INPUTS
37 RESULT
39 NOTES
41 EXAMPLE
43 BUGS
45 SEE ALSO
47 INTERNALS
49 ******************************************************************************/
51 AROS_LIBFUNC_INIT
53 ExecLog(SysBase, EXECDEBUGF_EXCEPTHANDLER, "RemIntServer: Int %d, Interrupt %p\n", intNumber, interrupt);
55 if (intNumber >= INTB_KERNEL) {
56 KrnRemIRQHandler(interrupt->is_Node.ln_Succ);
57 return;
60 EXEC_LOCK_LIST_WRITE_AND_DISABLE(&SysBase->IntrList);
62 Remove((struct Node *)interrupt);
63 CUSTOM_DISABLE(intNumber, SysBase->IntVects[intNumber].iv_Data);
65 EXEC_UNLOCK_LIST_AND_ENABLE(&SysBase->IntrList);
67 AROS_LIBFUNC_EXIT
68 } /* RemIntServer */