From 788345e21ed20dc9648eb5f5445a6e1dd600c720 Mon Sep 17 00:00:00 2001 From: Kamelito Date: Sat, 9 May 2026 21:32:29 +0200 Subject: [PATCH 1/3] AddIntServer and RemIntServer changed to be more AOS like --- rom/exec/addintserver.c | 66 +++++++++++++++++++++++++++++++---------- rom/exec/remintserver.c | 45 ++++++++++++++++++++-------- 2 files changed, 83 insertions(+), 28 deletions(-) diff --git a/rom/exec/addintserver.c b/rom/exec/addintserver.c index ae02732be9a..671e489e9eb 100644 --- a/rom/exec/addintserver.c +++ b/rom/exec/addintserver.c @@ -1,5 +1,5 @@ /* - Copyright © 1995-2017, The AROS Development Team. All rights reserved. + Copyright © 1995-2017, The AROS Development Team. All rights reserved. $Id$ Desc: Add interrupt client to chain of interrupt servers @@ -30,14 +30,14 @@ static void krnIRQwrapper(void *data1, void *data2) NAME */ - AROS_LH2(void, AddIntServer, + AROS_LH2(void, AddIntServer, /* SYNOPSIS */ - AROS_LHA(ULONG, intNumber, D0), - AROS_LHA(struct Interrupt *, interrupt, A1), + AROS_LHA(ULONG, intNumber, D0), + AROS_LHA(struct Interrupt *, interrupt, A1), /* LOCATION */ - struct ExecBase *, SysBase, 28, Exec) + struct ExecBase *, SysBase, 28, Exec) /* FUNCTION @@ -46,8 +46,8 @@ static void krnIRQwrapper(void *data1, void *data2) RESULT NOTES - This function also enables the corresponding chipset interrupt if - run on a native Amiga. + This function also enables the corresponding chipset interrupt if + run on a native Amiga. EXAMPLE @@ -61,20 +61,54 @@ static void krnIRQwrapper(void *data1, void *data2) { AROS_LIBFUNC_INIT - ExecLog(SysBase, EXECDEBUGF_EXCEPTHANDLER, "AddIntServer: Int %d, Interrupt %p\n", intNumber, interrupt); + ExecLog(SysBase, EXECDEBUGF_EXCEPTHANDLER, + "AddIntServer: Int %d, Interrupt %p\n", + intNumber, interrupt); + /* ------------------------------------------------------------ + * Classic AmigaOS 1.2–3.1 behavior: + * Kernel IRQs are NOT handled here. + * ------------------------------------------------------------ */ if (intNumber >= INTB_KERNEL) { - /* N.B. ln_Succ is being re-purposed/abused here */ - interrupt->is_Node.ln_Succ = KrnAddIRQHandler(intNumber - INTB_KERNEL, krnIRQwrapper, interrupt, SysBase); + interrupt->is_Node.ln_Succ = + KrnAddIRQHandler(intNumber - INTB_KERNEL, + krnIRQwrapper, + interrupt, + SysBase); return; } - EXEC_LOCK_LIST_WRITE_AND_DISABLE(&SysBase->IntrList); - - Enqueue((struct List *)SysBase->IntVects[intNumber].iv_Data, &interrupt->is_Node); - CUSTOM_ENABLE(intNumber); - - EXEC_UNLOCK_LIST_AND_ENABLE(&SysBase->IntrList); + struct List *list = (struct List *)SysBase->IntVects[intNumber].iv_Data; + volatile UWORD *INTENA = (UWORD *)0xDFF09A; + UWORD mask; + + /* ------------------------------------------------------------ + * Disable() + * ------------------------------------------------------------ + * - Write INTENA = $4000 (clear + disable all interrupts) + * - Increment IDNestCnt + * - Does NOT modify CPU SR (unlike AROS) + * ------------------------------------------------------------ */ + *INTENA = 0x4000; + SysBase->IDNestCnt++; + + /* ------------------------------------------------------------ + * Insert interrupt server into vector list + * ------------------------------------------------------------ */ + Enqueue(list, &interrupt->is_Node); + + /* ------------------------------------------------------------ + * Enable the corresponding hardware interrupt + * ------------------------------------------------------------ */ + mask = 0x8000 | (1 << intNumber); + *INTENA = mask; + + /* ------------------------------------------------------------ + * Enable() — AmigaOS 1.2–3.1 behavior + * ------------------------------------------------------------ */ + SysBase->IDNestCnt--; + if ((BYTE)SysBase->IDNestCnt < 0) + *INTENA = 0xC000; AROS_LIBFUNC_EXIT } /* AddIntServer */ diff --git a/rom/exec/remintserver.c b/rom/exec/remintserver.c index ca54fbce63e..576bb70e3c6 100644 --- a/rom/exec/remintserver.c +++ b/rom/exec/remintserver.c @@ -1,5 +1,5 @@ /* - Copyright © 1995-2017, The AROS Development Team. All rights reserved. + Copyright © 1995-2017, The AROS Development Team. All rights reserved. $Id$ Desc: Remove an interrupt handler. @@ -21,14 +21,14 @@ NAME */ - AROS_LH2(void, RemIntServer, + AROS_LH2(void, RemIntServer, /* SYNOPSIS */ - AROS_LHA(ULONG, intNumber, D0), - AROS_LHA(struct Interrupt *, interrupt, A1), + AROS_LHA(ULONG, intNumber, D0), + AROS_LHA(struct Interrupt *, interrupt, A1), /* LOCATION */ - struct ExecBase *, SysBase, 29, Exec) + struct ExecBase *, SysBase, 29, Exec) /* FUNCTION @@ -50,19 +50,40 @@ { AROS_LIBFUNC_INIT - ExecLog(SysBase, EXECDEBUGF_EXCEPTHANDLER, "RemIntServer: Int %d, Interrupt %p\n", intNumber, interrupt); + ExecLog(SysBase, EXECDEBUGF_EXCEPTHANDLER, + "RemIntServer: Int %d, Interrupt %p\n", + intNumber, interrupt); + /* Kernel IRQs still go through the AROS kernel handler path */ if (intNumber >= INTB_KERNEL) { KrnRemIRQHandler(interrupt->is_Node.ln_Succ); return; } - EXEC_LOCK_LIST_WRITE_AND_DISABLE(&SysBase->IntrList); - - Remove((struct Node *)interrupt); - CUSTOM_DISABLE(intNumber, SysBase->IntVects[intNumber].iv_Data); - - EXEC_UNLOCK_LIST_AND_ENABLE(&SysBase->IntrList); + volatile UWORD *INTENA = (UWORD *)0xDFF09A; + + /* ------------------------------------------------------------ + * Disable() — same logic as in AddIntServer() + * - Write INTENA = $4000 (clear + disable all interrupts) + * - Increment IDNestCnt + * - Does NOT modify CPU SR + * ------------------------------------------------------------ */ + *INTENA = 0x4000; + SysBase->IDNestCnt++; + + /* ------------------------------------------------------------ + * Remove the interrupt server from the list + * ------------------------------------------------------------ */ + Remove(&interrupt->is_Node); + + /* ------------------------------------------------------------ + * Enable() — same logic as in AddIntServer() + * - Decrement IDNestCnt + * - If it becomes negative, write INTENA = $C000 (enable all) + * ------------------------------------------------------------ */ + SysBase->IDNestCnt--; + if ((BYTE)SysBase->IDNestCnt < 0) + *INTENA = 0xC000; AROS_LIBFUNC_EXIT } /* RemIntServer */ From 1368bc799475609ce85aaef7278ce8c92768dd14 Mon Sep 17 00:00:00 2001 From: Kamelito Date: Sat, 9 May 2026 21:59:15 +0200 Subject: [PATCH 2/3] change to disable and enable and to addintserver and remintserver to reflect changes --- rom/exec/addintserver.c | 20 +++--------- rom/exec/disable.c | 64 ++++++++++++++++-------------------- rom/exec/enable.c | 72 +++++++++-------------------------------- rom/exec/remintserver.c | 18 +++-------- 4 files changed, 52 insertions(+), 122 deletions(-) diff --git a/rom/exec/addintserver.c b/rom/exec/addintserver.c index 671e489e9eb..033aa878e39 100644 --- a/rom/exec/addintserver.c +++ b/rom/exec/addintserver.c @@ -66,7 +66,6 @@ static void krnIRQwrapper(void *data1, void *data2) intNumber, interrupt); /* ------------------------------------------------------------ - * Classic AmigaOS 1.2–3.1 behavior: * Kernel IRQs are NOT handled here. * ------------------------------------------------------------ */ if (intNumber >= INTB_KERNEL) { @@ -80,17 +79,11 @@ static void krnIRQwrapper(void *data1, void *data2) struct List *list = (struct List *)SysBase->IntVects[intNumber].iv_Data; volatile UWORD *INTENA = (UWORD *)0xDFF09A; - UWORD mask; /* ------------------------------------------------------------ - * Disable() - * ------------------------------------------------------------ - * - Write INTENA = $4000 (clear + disable all interrupts) - * - Increment IDNestCnt - * - Does NOT modify CPU SR (unlike AROS) + * Disable() — classic Exec * ------------------------------------------------------------ */ - *INTENA = 0x4000; - SysBase->IDNestCnt++; + Disable(); /* ------------------------------------------------------------ * Insert interrupt server into vector list @@ -100,15 +93,12 @@ static void krnIRQwrapper(void *data1, void *data2) /* ------------------------------------------------------------ * Enable the corresponding hardware interrupt * ------------------------------------------------------------ */ - mask = 0x8000 | (1 << intNumber); - *INTENA = mask; + *INTENA = 0x8000 | (1 << intNumber); /* ------------------------------------------------------------ - * Enable() — AmigaOS 1.2–3.1 behavior + * Enable() — classic Exec * ------------------------------------------------------------ */ - SysBase->IDNestCnt--; - if ((BYTE)SysBase->IDNestCnt < 0) - *INTENA = 0xC000; + Enable(); AROS_LIBFUNC_EXIT } /* AddIntServer */ diff --git a/rom/exec/disable.c b/rom/exec/disable.c index ea22576c631..81b4fb9821b 100644 --- a/rom/exec/disable.c +++ b/rom/exec/disable.c @@ -1,5 +1,5 @@ /* - Copyright © 1995-2017, The AROS Development Team. All rights reserved. + Copyright © 1995-2017, The AROS Development Team. All rights reserved. $Id$ Desc: Disable() - Stop interrupts from occurring. @@ -9,7 +9,6 @@ #include #include #include -#include #include "exec_intern.h" @@ -22,59 +21,48 @@ /* NAME */ #include - AROS_LH0(void, Disable, + AROS_LH0(void, Disable, /* LOCATION */ - struct ExecBase *, SysBase, 20, Exec) + struct ExecBase *, SysBase, 20, Exec) /* FUNCTION - This function will prevent interrupts from occuring (*). You can - start the interrupts again with a call to Enable(). + This function will prevent interrupts from occurring. You can + start the interrupts again with a call to Enable(). - Note that calls to Disable() nest, and for every call to - Disable() you need a matching call to Enable(). + Note that calls to Disable() nest, and for every call to + Disable() you need a matching call to Enable(). - ***** WARNING ***** + ***** WARNING ***** - Using this function is considered very harmful, and it should only - ever be used to protect data that could also be accessed in interrupts. + Using this function is considered very harmful, and it should only + ever be used to protect data that could also be accessed in interrupts. - It is quite possible to either crash the system, or to prevent - normal activities (disk/port i/o) from occuring. + It is quite possible to either crash the system, or to prevent + normal activities (disk/port i/o) from occurring. INPUTS RESULT - Interrupts will be disabled AFTER this call returns. + Interrupts will be disabled AFTER this call returns. NOTES - This function preserves all registers. + This function preserves all registers. - To prevent deadlocks calling Wait() in disabled state breaks - the disable - thus interrupts may happen again. - - As the schedulers pre-emption is interrupt driven, - this function has the side effect of disabling - multitasking. - - (*) On EXECSMP builds, Disable() only aplies to the processor - it is called from (and needs to be re-enabled there also) - Data which needs to be protected from parallel access will - also require a spinlock. + As the scheduler's pre-emption is interrupt driven, + this function has the side effect of disabling multitasking. EXAMPLE - In most userspace code, you will not want to use this function. + In most userspace code, you will not want to use this function. BUGS - The only architecture that you can rely on the registers being - saved is on the Motorola mc68000 family. + The only architecture that you can rely on the registers being + saved is on the Motorola mc68000 family. SEE ALSO - Forbid(), Permit(), Enable(), Wait() + Forbid(), Permit(), Enable(), Wait() INTERNALS - This function must be replaced in the $(KERNEL) or $(ARCH) - directories in order to do some work. ******************************************************************************/ { @@ -84,12 +72,16 @@ D(bug("[Exec] Disable()\n");) - if (KernelBase) - KrnCli(); + /* + * - INTENA = $4000 (clear + disable all interrupts) + * - IDNestCnt++ + */ + volatile UWORD *INTENA = (UWORD *)0xDFF09A; - IDNESTCOUNT_INC; + *INTENA = 0x4000; + SysBase->IDNestCnt++; - D(bug("[Exec] Disable: IDNESTCOUNT = %d\n", IDNESTCOUNT_GET);) + D(bug("[Exec] Disable: IDNESTCOUNT = %d\n", SysBase->IDNestCnt);) AROS_LIBFUNC_EXIT } /* Disable() */ diff --git a/rom/exec/enable.c b/rom/exec/enable.c index ee7889a9b00..576cfc3f391 100644 --- a/rom/exec/enable.c +++ b/rom/exec/enable.c @@ -1,5 +1,5 @@ /* - Copyright © 1995-2018, The AROS Development Team. All rights reserved. + Copyright © 1995-2018, The AROS Development Team. All rights reserved. $Id$ Desc: Enable() - Allow interrupts to occur after Disable(). @@ -10,7 +10,6 @@ #include #include -#include #include "exec_intern.h" @@ -29,7 +28,7 @@ struct ExecBase *, SysBase, 21, Exec) /* FUNCTION - This function will allow interrupts to occur (*) after they have + This function will allow interrupts to occur after they have been disabled by Disable(). Note that calls to Disable() nest, and for every call to @@ -37,13 +36,9 @@ ***** WARNING ***** - Using this function is considered very harmful, and it should only ever be used to protect data that could also be accessed in interrupts. - It is quite possible to either crash the system, or to prevent - normal activities (disk/port i/o) from occuring. - INPUTS None. @@ -53,16 +48,8 @@ NOTES This function preserves all registers. - To prevent deadlocks calling Wait() in disabled state breaks - the disable - thus interrupts may happen again. - - As the schedulers pre-emption is interrupt driven, - this function has the side effect of disabling - multitasking. - - (*) On EXECSMP builds, Enable() only applies to the processor - it is called from. Data which needs to be protected from - parallel access will also require a spinlock. + As the scheduler's pre-emption is interrupt driven, + this function has the side effect of disabling multitasking. EXAMPLE In most userspace code, you will not want to use this function. @@ -84,49 +71,20 @@ D(bug("[Exec] Enable()\n");) - IDNESTCOUNT_DEC; + /* Classic AmigaOS 1.2–3.1 Enable(): + * - IDNestCnt-- + * - If negative, INTENA = $C000 (enable all) + */ + volatile UWORD *INTENA = (UWORD *)0xDFF09A; + + SysBase->IDNestCnt--; - D(bug("[Exec] Enable: IDNESTCOUNT = %d\n", IDNESTCOUNT_GET);) + D(bug("[Exec] Enable: IDNESTCOUNT = %d\n", SysBase->IDNestCnt);) - if (KernelBase) + if ((BYTE)SysBase->IDNestCnt < 0) { - if (IDNESTCOUNT_GET < 0) - { - D(bug("[Exec] Enable: Enabling interrupts\n");) - - /* The following stuff is not safe to call from within supervisor mode */ - if (!KrnIsSuper()) - { - KrnSti(); - - /* - * There's no dff09c like thing in x86 native which would allow - * us to set delayed (mark it as pending but it gets triggered - * only once interrupts are enabled again) software interrupt, - * so we check it manually here in Enable(), similar to Permit(). - */ - if (SysBase->SysFlags & SFF_SoftInt) - { - /* - * First we react on SFF_SoftInt by issuing KrnCause() call. This triggers - * the complete interrupt processing code in kernel, which implies also - * rescheduling if it becomes necessary. - */ - D(bug("[Exec] Enable: causing softints\n");) - KrnCause(); - } - - if ((TDNESTCOUNT_GET < 0) && FLAG_SCHEDSWITCH_ISSET) - { - /* - * If SFF_SoftInt hasn't been set, we have a chance that task switching - * is enabled and pending. We need to trigger it here in such a case. - */ - D(bug("[Exec] Enable: rescheduling\n");) - KrnSchedule(); - } - } - } + D(bug("[Exec] Enable: Enabling interrupts\n");) + *INTENA = 0xC000; } AROS_LIBFUNC_EXIT diff --git a/rom/exec/remintserver.c b/rom/exec/remintserver.c index 576bb70e3c6..db97afdee7b 100644 --- a/rom/exec/remintserver.c +++ b/rom/exec/remintserver.c @@ -60,16 +60,10 @@ return; } - volatile UWORD *INTENA = (UWORD *)0xDFF09A; - /* ------------------------------------------------------------ - * Disable() — same logic as in AddIntServer() - * - Write INTENA = $4000 (clear + disable all interrupts) - * - Increment IDNestCnt - * - Does NOT modify CPU SR + * Disable() — classic Exec * ------------------------------------------------------------ */ - *INTENA = 0x4000; - SysBase->IDNestCnt++; + Disable(); /* ------------------------------------------------------------ * Remove the interrupt server from the list @@ -77,13 +71,9 @@ Remove(&interrupt->is_Node); /* ------------------------------------------------------------ - * Enable() — same logic as in AddIntServer() - * - Decrement IDNestCnt - * - If it becomes negative, write INTENA = $C000 (enable all) + * Enable() — classic Exec * ------------------------------------------------------------ */ - SysBase->IDNestCnt--; - if ((BYTE)SysBase->IDNestCnt < 0) - *INTENA = 0xC000; + Enable(); AROS_LIBFUNC_EXIT } /* RemIntServer */ From cd806f3ed2d98096e72a7ec04bd3589ab23e64a2 Mon Sep 17 00:00:00 2001 From: Kamelito Date: Sun, 10 May 2026 19:10:17 +0200 Subject: [PATCH 3/3] formatting --- rom/exec/addintserver.c | 25 +++++++++------------ rom/exec/disable.c | 49 ++++++++++++++++++++++++----------------- rom/exec/enable.c | 20 +++++++++++++---- rom/exec/remintserver.c | 13 +++++------ 4 files changed, 60 insertions(+), 47 deletions(-) diff --git a/rom/exec/addintserver.c b/rom/exec/addintserver.c index 033aa878e39..72b0612ad94 100644 --- a/rom/exec/addintserver.c +++ b/rom/exec/addintserver.c @@ -18,7 +18,7 @@ #include "chipset.h" #include "exec_locks.h" -static void krnIRQwrapper(void *data1, void *data2) +static void krnIRQwrapper(void *data1, void *data2) { struct Interrupt *irq = (struct Interrupt *)data1; struct ExecBase *SysBase = (struct ExecBase *)data2; @@ -30,14 +30,14 @@ static void krnIRQwrapper(void *data1, void *data2) NAME */ - AROS_LH2(void, AddIntServer, + AROS_LH2(void, AddIntServer, /* SYNOPSIS */ - AROS_LHA(ULONG, intNumber, D0), - AROS_LHA(struct Interrupt *, interrupt, A1), + AROS_LHA(ULONG, intNumber, D0), + AROS_LHA(struct Interrupt *, interrupt, A1), /* LOCATION */ - struct ExecBase *, SysBase, 28, Exec) + struct ExecBase *, SysBase, 28, Exec) /* FUNCTION @@ -46,8 +46,8 @@ static void krnIRQwrapper(void *data1, void *data2) RESULT NOTES - This function also enables the corresponding chipset interrupt if - run on a native Amiga. + This function also enables the corresponding chipset interrupt if + run on a native Amiga. EXAMPLE @@ -61,19 +61,14 @@ static void krnIRQwrapper(void *data1, void *data2) { AROS_LIBFUNC_INIT - ExecLog(SysBase, EXECDEBUGF_EXCEPTHANDLER, - "AddIntServer: Int %d, Interrupt %p\n", - intNumber, interrupt); + ExecLog(SysBase, EXECDEBUGF_EXCEPTHANDLER, "AddIntServer: Int %d, Interrupt %p\n", intNumber, interrupt); /* ------------------------------------------------------------ * Kernel IRQs are NOT handled here. * ------------------------------------------------------------ */ if (intNumber >= INTB_KERNEL) { - interrupt->is_Node.ln_Succ = - KrnAddIRQHandler(intNumber - INTB_KERNEL, - krnIRQwrapper, - interrupt, - SysBase); + /* N.B. ln_Succ is being re-purposed/abused here */ + interrupt->is_Node.ln_Succ = KrnAddIRQHandler(intNumber - INTB_KERNEL, krnIRQwrapper, interrupt, SysBase); return; } diff --git a/rom/exec/disable.c b/rom/exec/disable.c index 81b4fb9821b..ca2cd0593f4 100644 --- a/rom/exec/disable.c +++ b/rom/exec/disable.c @@ -1,6 +1,5 @@ /* Copyright © 1995-2017, The AROS Development Team. All rights reserved. - $Id$ Desc: Disable() - Stop interrupts from occurring. Lang: english @@ -9,6 +8,7 @@ #include #include #include +#include #include "exec_intern.h" @@ -21,46 +21,55 @@ /* NAME */ #include - AROS_LH0(void, Disable, + AROS_LH0(void, Disable, /* LOCATION */ - struct ExecBase *, SysBase, 20, Exec) + struct ExecBase *, SysBase, 20, Exec) /* FUNCTION - This function will prevent interrupts from occurring. You can - start the interrupts again with a call to Enable(). + This function will prevent interrupts from occuring (*). You can + start the interrupts again with a call to Enable() - Note that calls to Disable() nest, and for every call to - Disable() you need a matching call to Enable(). + Note that calls to Disable() nest, and for every call to + Disable() you need a matching call to Enable(). - ***** WARNING ***** + ***** WARNING ***** - Using this function is considered very harmful, and it should only - ever be used to protect data that could also be accessed in interrupts. + Using this function is considered very harmful, and it should only + ever be used to protect data that could also be accessed in interrupts. - It is quite possible to either crash the system, or to prevent - normal activities (disk/port i/o) from occurring. + It is quite possible to either crash the system, or to prevent + normal activities (disk/port i/o) from occuring. INPUTS RESULT - Interrupts will be disabled AFTER this call returns. + Interrupts will be disabled AFTER this call returns. NOTES - This function preserves all registers. + This function preserves all registers. - As the scheduler's pre-emption is interrupt driven, - this function has the side effect of disabling multitasking. + To prevent deadlocks calling Wait() in disabled state breaks + the disable - thus interrupts may happen again. + + As the schedulers pre-emption is interrupt driven, + this function has the side effect of disabling + multitasking. + + (*) On EXECSMP builds, Disable() only aplies to the processor + it is called from (and needs to be re-enabled there also) + Data which needs to be protected from parallel access will + also require a spinlock. EXAMPLE - In most userspace code, you will not want to use this function. + In most userspace code, you will not want to use this function. BUGS - The only architecture that you can rely on the registers being - saved is on the Motorola mc68000 family. + The only architecture that you can rely on the registers being + saved is on the Motorola mc68000 family. SEE ALSO - Forbid(), Permit(), Enable(), Wait() + Forbid(), Permit(), Enable(), Wait() INTERNALS diff --git a/rom/exec/enable.c b/rom/exec/enable.c index 576cfc3f391..a8e6fdf442d 100644 --- a/rom/exec/enable.c +++ b/rom/exec/enable.c @@ -10,6 +10,7 @@ #include #include +#include #include "exec_intern.h" @@ -28,7 +29,7 @@ struct ExecBase *, SysBase, 21, Exec) /* FUNCTION - This function will allow interrupts to occur after they have + This function will allow interrupts to occur (*) after they have been disabled by Disable(). Note that calls to Disable() nest, and for every call to @@ -36,6 +37,9 @@ ***** WARNING ***** + It is quite possible to either crash the system, or to prevent + normal activities (disk/port i/o) from occuring. + Using this function is considered very harmful, and it should only ever be used to protect data that could also be accessed in interrupts. @@ -48,8 +52,16 @@ NOTES This function preserves all registers. - As the scheduler's pre-emption is interrupt driven, - this function has the side effect of disabling multitasking. + To prevent deadlocks calling Wait() in disabled state breaks + the disable - thus interrupts may happen again. + + As the schedulers pre-emption is interrupt driven, + this function has the side effect of disabling + multitasking. + + (*) On EXECSMP builds, Enable() only applies to the processor + it is called from. Data which needs to be protected from + parallel access will also require a spinlock. EXAMPLE In most userspace code, you will not want to use this function. @@ -71,7 +83,7 @@ D(bug("[Exec] Enable()\n");) - /* Classic AmigaOS 1.2–3.1 Enable(): + /* Classic Enable(): * - IDNestCnt-- * - If negative, INTENA = $C000 (enable all) */ diff --git a/rom/exec/remintserver.c b/rom/exec/remintserver.c index db97afdee7b..d4d4ad5313f 100644 --- a/rom/exec/remintserver.c +++ b/rom/exec/remintserver.c @@ -21,14 +21,14 @@ NAME */ - AROS_LH2(void, RemIntServer, + AROS_LH2(void, RemIntServer, /* SYNOPSIS */ - AROS_LHA(ULONG, intNumber, D0), - AROS_LHA(struct Interrupt *, interrupt, A1), + AROS_LHA(ULONG, intNumber, D0), + AROS_LHA(struct Interrupt *, interrupt, A1), /* LOCATION */ - struct ExecBase *, SysBase, 29, Exec) + struct ExecBase *, SysBase, 29, Exec) /* FUNCTION @@ -50,11 +50,8 @@ { AROS_LIBFUNC_INIT - ExecLog(SysBase, EXECDEBUGF_EXCEPTHANDLER, - "RemIntServer: Int %d, Interrupt %p\n", - intNumber, interrupt); + ExecLog(SysBase, EXECDEBUGF_EXCEPTHANDLER, "RemIntServer: Int %d, Interrupt %p\n", intNumber, interrupt); - /* Kernel IRQs still go through the AROS kernel handler path */ if (intNumber >= INTB_KERNEL) { KrnRemIRQHandler(interrupt->is_Node.ln_Succ); return;