2 Copyright © 1995-2014, The AROS Development Team. All rights reserved.
6 #include <aros/asmcall.h>
7 #include <exec/execbase.h>
8 #include <exec/lists.h>
10 #include "intservers.h"
13 * Our default IntVectors.
14 * This interrupt handler will send an interrupt to a series of queued
15 * interrupt servers. Servers should return D0 != 0 (Z clear) if they
16 * believe the interrupt was for them, and no further interrupts will
17 * be called. This will only check the value in D0 for non-m68k systems,
18 * however it SHOULD check the Z-flag on 68k systems.
20 * Hmm, in that case I would have to separate it from this file in order
21 * to replace it... TODO: this can be done after merging exec_init.c from
22 * i386 and PPC native.
24 AROS_INTH3(IntServer
, struct List
*, intList
, intMask
, custom
)
28 struct Interrupt
* irq
;
31 ForeachNode(intList
, irq
) {
32 if (AROS_INTC3(irq
->is_Code
, irq
->is_Data
, intMask
, custom
)) {
45 /* VBlankServer. The same as general purpose IntServer but also counts task's quantum */
46 AROS_INTH3(VBlankServer
, struct List
*, intList
, intMask
, custom
)
50 /* First decrease Elapsed time for current task */
51 if (SysBase
->Elapsed
&& (--SysBase
->Elapsed
== 0))
53 SysBase
->SysFlags
|= SFF_QuantumOver
;
54 SysBase
->AttnResched
|= ARF_AttnSwitch
;
57 /* Chain to the generic routine */
58 return AROS_INTC3(IntServer
, intList
, intMask
, custom
);