Applied, thanks! Damien Zammit, le sam. 05 août 2023 15:48:53 +0000, a ecrit: > --- > i386/i386at/interrupt.S | 1 + > x86_64/interrupt.S | 10 ++++++++++ > 2 files changed, 11 insertions(+) > > diff --git a/i386/i386at/interrupt.S b/i386/i386at/interrupt.S > index 55f4fa0f..1f661f8d 100644 > --- a/i386/i386at/interrupt.S > +++ b/i386/i386at/interrupt.S > @@ -123,6 +123,7 @@ _no_eoi: > ret > > _call_single: > + cli /* no nested interrupts */ > call EXT(lapic_eoi) /* lapic EOI before the handler to > allow extra update */ > call EXT(pmap_update_interrupt) /* TODO: Allow other functions */ > ret > diff --git a/x86_64/interrupt.S b/x86_64/interrupt.S > index 31f386ec..eabf934e 100644 > --- a/x86_64/interrupt.S > +++ b/x86_64/interrupt.S > @@ -42,6 +42,9 @@ ENTRY(interrupt) > #ifdef APIC > cmpl $255,%eax /* was this a spurious intr? */ > je _no_eoi /* if so, just return */ > + > + cmpl $CALL_SINGLE_FUNCTION_BASE,%eax /* was this a SMP call single > function request? */ > + je _call_single > #endif > subq $16,%rsp /* Two local variables */ > movl %eax,S_IRQ /* save irq number */ > @@ -112,6 +115,13 @@ ENTRY(interrupt) > _isa_eoi: > movl %ecx,%edi /* load irq number as 1st arg */ > call EXT(ioapic_irq_eoi) /* ioapic irq specific EOI */ > + addq $16,%rsp /* pop local variables */ > + ret > +_call_single: > + cli /* no nested interrupts */ > + call EXT(lapic_eoi) /* lapic EOI before the handler to > allow extra update */ > + call EXT(pmap_update_interrupt) /* TODO: Allow other functions */ > + ret > #endif > addq $16,%rsp /* pop local variables */ > _no_eoi: > -- > 2.40.1 > > >
-- Samuel --- Pour une évaluation indépendante, transparente et rigoureuse ! Je soutiens la Commission d'Évaluation de l'Inria.