aboutsummaryrefslogtreecommitdiff
path: root/i386
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2023-02-13 08:49:39 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-02-13 23:56:53 +0100
commit485d75f1ddf1d620029f6c62ce35efc6ed460d9c (patch)
tree9186be05811844932139923f0592389acece986c /i386
parentf8a02176425a15b678c1dea6956c7cedef7fe986 (diff)
downloadgnumach-485d75f1ddf1d620029f6c62ce35efc6ed460d9c.tar.gz
gnumach-485d75f1ddf1d620029f6c62ce35efc6ed460d9c.tar.bz2
gnumach-485d75f1ddf1d620029f6c62ce35efc6ed460d9c.zip
interrupt.S: Dont change ipl for pmap_update_interrupt
Message-Id: <20230213084919.1157074-2-damien@zamaudio.com>
Diffstat (limited to 'i386')
-rw-r--r--i386/i386at/interrupt.S6
1 files changed, 3 insertions, 3 deletions
diff --git a/i386/i386at/interrupt.S b/i386/i386at/interrupt.S
index 1103b1c8..55f4fa0f 100644
--- a/i386/i386at/interrupt.S
+++ b/i386/i386at/interrupt.S
@@ -43,6 +43,9 @@ ENTRY(interrupt)
cmpl $255,%eax /* was this a spurious intr? */
je _no_eoi /* if so, just return */
#endif
+ cmpl $CALL_SINGLE_FUNCTION_BASE,%eax /* was this a SMP call single function request? */
+ je _call_single
+
subl $24,%esp /* Two local variables + 4 parameters */
movl %eax,S_IRQ /* save irq number */
call spl7 /* set ipl */
@@ -58,8 +61,6 @@ ENTRY(interrupt)
movl %eax,12(%esp) /* address of interrupted registers as 4th arg */
movl S_IRQ,%eax /* copy irq number */
- cmpl $CALL_SINGLE_FUNCTION_BASE,%eax /* was this a SMP call single function request? */
- je _call_single
shll $2,%eax /* irq * 4 */
movl EXT(iunit)(%eax),%edx /* get device unit number */
@@ -124,6 +125,5 @@ _no_eoi:
_call_single:
call EXT(lapic_eoi) /* lapic EOI before the handler to allow extra update */
call EXT(pmap_update_interrupt) /* TODO: Allow other functions */
- addl $24,%esp
ret
END(interrupt)