summaryrefslogtreecommitdiff
path: root/x86_64
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2023-08-12 18:57:09 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-08-12 23:29:30 +0200
commit18c0d15c5b63fc2345c63a78f5586ff47eda706f (patch)
treeaf58a58053746a84048bfeba5acef6583e16c118 /x86_64
parent98a5b2d84e39d5cc8a92951589aa307fdbaff902 (diff)
simple lock: check that the non-_irq variants are not called from IRQ
Diffstat (limited to 'x86_64')
-rw-r--r--x86_64/locore.S14
1 files changed, 11 insertions, 3 deletions
diff --git a/x86_64/locore.S b/x86_64/locore.S
index 070644bd..1ac7575e 100644
--- a/x86_64/locore.S
+++ b/x86_64/locore.S
@@ -820,12 +820,20 @@ ENTRY(all_intrs)
TIME_INT_ENTRY /* do timing */
#endif
- call EXT(interrupt) /* call generic interrupt routine */
+#ifdef MACH_LDEBUG
+ CPU_NUMBER(%ecx)
+ incl CX(EXT(in_interrupt),%rcx)
+#endif
- .globl EXT(return_to_iret)
-LEXT(return_to_iret) /* ( label for kdb_kintr and hardclock) */
+ call EXT(interrupt) /* call generic interrupt routine */
+ .globl EXT(return_to_iret) /* ( label for kdb_kintr and hardclock */
+LEXT(return_to_iret) /* to find the return from calling interrupt) */
CPU_NUMBER(%edx)
+#ifdef MACH_LDEBUG
+ decl CX(EXT(in_interrupt),%rdx)
+#endif
+
#if STAT_TIME
#else
TIME_INT_EXIT /* do timing */