diff options
author | Damien Zammit <damien@zamaudio.com> | 2023-08-13 00:51:02 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-08-13 00:51:02 +0200 |
commit | 6dcf01215edfd49a97c86e7c0d49e0d75785cf84 (patch) | |
tree | ca058ebedd32853617f92ced7bb4b3c5944744f7 /i386/i386at/interrupt.S | |
parent | 8ff5ff4001e2f6c2361f452db6f7f468ea3a84b9 (diff) | |
download | gnumach-6dcf01215edfd49a97c86e7c0d49e0d75785cf84.tar.gz gnumach-6dcf01215edfd49a97c86e7c0d49e0d75785cf84.tar.bz2 gnumach-6dcf01215edfd49a97c86e7c0d49e0d75785cf84.zip |
i386/x86_64: Add remote AST via IPI mechanism
Diffstat (limited to 'i386/i386at/interrupt.S')
-rw-r--r-- | i386/i386at/interrupt.S | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/i386/i386at/interrupt.S b/i386/i386at/interrupt.S index e9e9c0ef..01198bf5 100644 --- a/i386/i386at/interrupt.S +++ b/i386/i386at/interrupt.S @@ -48,6 +48,9 @@ ENTRY(interrupt) cmpl $CALL_SINGLE_FUNCTION_BASE,%eax /* was this a SMP call single function request? */ je _call_single + cmpl $CALL_LOCAL_AST_BASE,%eax /* was this a SMP remote -> local ast request? */ + je _call_local_ast + subl $24,%esp /* Two local variables + 4 parameters */ movl %eax,S_IRQ /* save irq number */ @@ -129,4 +132,9 @@ _call_single: call EXT(lapic_eoi) /* lapic EOI before the handler to allow extra update */ call EXT(pmap_update_interrupt) /* TODO: Allow other functions */ ret + +_call_local_ast: + call EXT(ast_check) /* AST check on this cpu */ + call EXT(lapic_eoi) /* lapic EOI */ + ret END(interrupt) |