summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2022-11-10 03:01:57 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2022-11-10 03:01:57 +0100
commit356d54992ab479e4709b3afce222759bfb3e0989 (patch)
treeb3f69f020be52528697cf58489cd79addf76142e
parent5eef813a78f77faf8bc741eb7adc738877c7184b (diff)
interrupt: Fix passing parameter to splx_cli and ioapic_irq_eoi
e2fcf261076b (""interrupt: Fix saving irq/ipl when linux drivers are disabled") broke booting under some conditions, because the parameters were erroneously written 4 bytes too far for splx_cli and ioapic_irq_eoi to read them.
-rw-r--r--i386/i386at/interrupt.S4
1 files changed, 2 insertions, 2 deletions
diff --git a/i386/i386at/interrupt.S b/i386/i386at/interrupt.S
index 8fd18392..7480fba9 100644
--- a/i386/i386at/interrupt.S
+++ b/i386/i386at/interrupt.S
@@ -66,7 +66,7 @@ ENTRY(interrupt)
call *EXT(ivect)(%eax) /* call interrupt handler */
movl S_IPL,%eax /* restore previous ipl */
- movl %eax,S_ARG0
+ movl %eax,(%esp)
call splx_cli /* restore previous ipl */
cli /* XXX no more nested interrupts */
@@ -112,7 +112,7 @@ ENTRY(interrupt)
cmpl $16,%ecx /* was this a low ISA intr? */
jge _no_eoi /* no, must be PCI (let irq_ack handle EOI) */
_isa_eoi:
- movl %ecx,S_ARG0 /* load irq number as 1st arg */
+ movl %ecx,(%esp) /* load irq number as 1st arg */
call EXT(ioapic_irq_eoi) /* ioapic irq specific EOI */
#endif
addl $28,%esp /* pop local variables */