diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-08-10 19:03:10 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-08-10 19:03:10 +0200 |
commit | d2a853126d4b017d5029e2adbdcb844542fb7d7a (patch) | |
tree | 306c5cb2cea0476ee6b0beddb6899493e2b8f0c1 /x86_64/interrupt.S | |
parent | f895575c639e338474c7de6678ee8f3a0756c0d1 (diff) | |
download | gnumach-d2a853126d4b017d5029e2adbdcb844542fb7d7a.tar.gz gnumach-d2a853126d4b017d5029e2adbdcb844542fb7d7a.tar.bz2 gnumach-d2a853126d4b017d5029e2adbdcb844542fb7d7a.zip |
x86_64: homogeneize with i386 about _call_single
Diffstat (limited to 'x86_64/interrupt.S')
-rw-r--r-- | x86_64/interrupt.S | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/x86_64/interrupt.S b/x86_64/interrupt.S index eabf934e..845e0d1a 100644 --- a/x86_64/interrupt.S +++ b/x86_64/interrupt.S @@ -42,12 +42,13 @@ ENTRY(interrupt) #ifdef APIC 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 -#endif + subq $16,%rsp /* Two local variables */ movl %eax,S_IRQ /* save irq number */ + call spl7 /* set ipl */ movl %eax,S_IPL /* save previous ipl */ @@ -115,15 +116,14 @@ ENTRY(interrupt) _isa_eoi: movl %ecx,%edi /* load irq number as 1st arg */ call EXT(ioapic_irq_eoi) /* ioapic irq specific EOI */ +#endif addq $16,%rsp /* pop local variables */ +_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 -#endif - addq $16,%rsp /* pop local variables */ -_no_eoi: - ret END(interrupt) |