aboutsummaryrefslogtreecommitdiff
path: root/x86_64/interrupt.S
diff options
context:
space:
mode:
Diffstat (limited to 'x86_64/interrupt.S')
-rw-r--r--x86_64/interrupt.S11
1 files changed, 8 insertions, 3 deletions
diff --git a/x86_64/interrupt.S b/x86_64/interrupt.S
index 8e96a41e..74a25c49 100644
--- a/x86_64/interrupt.S
+++ b/x86_64/interrupt.S
@@ -45,10 +45,10 @@ ENTRY(interrupt)
ret /* if so, just return */
1:
#endif
- cmpl $CALL_SINGLE_FUNCTION_BASE,%eax /* was this a SMP call single function request? */
+ cmpl $CALL_PMAP_UPDATE,%eax /* was this a SMP pmap_update request? */
je _call_single
- cmpl $CALL_LOCAL_AST_BASE,%eax /* was this a SMP remote -> local ast request? */
+ cmpl $CALL_AST_CHECK,%eax /* was this a SMP remote -> local ast request? */
je _call_local_ast
subq $16,%rsp /* Two local variables */
@@ -128,6 +128,11 @@ _no_eoi:
_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 */
+ call EXT(pmap_update_interrupt)
+ ret
+
+_call_local_ast:
+ call EXT(ast_check) /* AST check on this cpu */
+ call EXT(lapic_eoi) /* lapic EOI */
ret
END(interrupt)