aboutsummaryrefslogtreecommitdiff
path: root/x86_64/interrupt.S
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2023-08-13 00:57:14 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-08-13 00:57:14 +0200
commitd6ca407ed23159d161309740c5bf342d13edcc43 (patch)
tree27ac659129ff79a47eec7fdae1f63c1c5162f023 /x86_64/interrupt.S
parent6dcf01215edfd49a97c86e7c0d49e0d75785cf84 (diff)
downloadgnumach-d6ca407ed23159d161309740c5bf342d13edcc43.tar.gz
gnumach-d6ca407ed23159d161309740c5bf342d13edcc43.tar.bz2
gnumach-d6ca407ed23159d161309740c5bf342d13edcc43.zip
IPI: Rework irq names and fix x86_64 build
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)