From 356d54992ab479e4709b3afce222759bfb3e0989 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Thu, 10 Nov 2022 03:01:57 +0100 Subject: 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. --- i386/i386at/interrupt.S | 4 ++-- 1 file 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 */ -- cgit v1.2.3