summaryrefslogtreecommitdiff
path: root/x86_64
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
parent6dcf01215edfd49a97c86e7c0d49e0d75785cf84 (diff)
IPI: Rework irq names and fix x86_64 build
Diffstat (limited to 'x86_64')
-rw-r--r--x86_64/interrupt.S11
-rw-r--r--x86_64/locore.S4
2 files changed, 10 insertions, 5 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)
diff --git a/x86_64/locore.S b/x86_64/locore.S
index 1ac7575e..def73d89 100644
--- a/x86_64/locore.S
+++ b/x86_64/locore.S
@@ -769,8 +769,8 @@ INTERRUPT(21)
INTERRUPT(22)
INTERRUPT(23)
#endif
-/* Invalidate TLB IPI to call pmap_update_interrupt() on a specific cpu */
-INTERRUPT(CALL_SINGLE_FUNCTION_BASE)
+INTERRUPT(CALL_AST_CHECK)
+INTERRUPT(CALL_PMAP_UPDATE)
#ifdef APIC
/* Spurious interrupt, set irq number to vect number */
INTERRUPT(255)