summaryrefslogtreecommitdiff
path: root/sys/arch/x86/include/cpufunc.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/x86/include/cpufunc.h')
-rw-r--r--sys/arch/x86/include/cpufunc.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/sys/arch/x86/include/cpufunc.h b/sys/arch/x86/include/cpufunc.h
index 524b8db6d86..8b216c21fcf 100644
--- a/sys/arch/x86/include/cpufunc.h
+++ b/sys/arch/x86/include/cpufunc.h
@@ -45,6 +45,7 @@
#ifdef _KERNEL
#if defined(_KERNEL_OPT)
#include "opt_xen.h"
+#include "opt_lockdebug.h"
#endif
static inline void
@@ -567,17 +568,41 @@ xrstor64(const void *addr, uint64_t mask)
void x86_disable_intr(void);
void x86_enable_intr(void);
#else
+
+#ifdef LOCKDEBUG
+#define x86_disable_intr() __x86_disable_intr(__FILE__, __LINE__, __func__)
+void __x86_disable_intr(const char *file, int line, const char *func);
+
+static __inline void lockdoc_x86_disable_intr(void)
+{
+ __asm volatile ("cli" ::: "memory");
+}
+
+#else
static inline void
x86_disable_intr(void)
{
__asm volatile ("cli" ::: "memory");
}
+#endif /* LOCKDEBUG */
+#ifdef LOCKDEBUG
+#define x86_enable_intr() __x86_enable_intr(__FILE__, __LINE__, __func__)
+void __x86_enable_intr(const char *file, int line, const char *func);
+
+static __inline void lockdoc_x86_enable_intr(void)
+{
+ __asm volatile ("sti" ::: "memory");
+}
+
+#else
static inline void
x86_enable_intr(void)
{
__asm volatile ("sti" ::: "memory");
}
+#endif /* LOCKDEBUG */
+
#endif /* XENPV */
/* Use read_psl, write_psl when saving and restoring interrupt state. */