summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/i386/conf/LOCKDOC2
-rw-r--r--sys/arch/i386/conf/files.i3862
-rw-r--r--sys/arch/x86/include/cpufunc.h25
3 files changed, 27 insertions, 2 deletions
diff --git a/sys/arch/i386/conf/LOCKDOC b/sys/arch/i386/conf/LOCKDOC
index 955fa29fec2..d7d2d0f7efe 100644
--- a/sys/arch/i386/conf/LOCKDOC
+++ b/sys/arch/i386/conf/LOCKDOC
@@ -22,7 +22,7 @@ include "arch/i386/conf/std.i386"
options INCLUDE_CONFIG_FILE # embed config file in kernel binary
-#ident "GENERIC-$Revision: 1.1208.2.5 $"
+#ident "LOCKDOC-$Revision: 1.1208.2.5 $"
maxusers 64 # estimated number of users
diff --git a/sys/arch/i386/conf/files.i386 b/sys/arch/i386/conf/files.i386
index 628d792929a..cabf5ab270b 100644
--- a/sys/arch/i386/conf/files.i386
+++ b/sys/arch/i386/conf/files.i386
@@ -48,7 +48,7 @@ defparam opt_beep.h BEEP_ONHALT_PITCH=1500
defparam opt_beep.h BEEP_ONHALT_PERIOD=250
-file lockdoc/log.c lockdebug
+file lockdoc/log.c lockdebug
# Multiboot support
defflag opt_multiboot.h MULTIBOOT
diff --git a/sys/arch/x86/include/cpufunc.h b/sys/arch/x86/include/cpufunc.h
index 12e1f406ec9..c82058278b3 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
@@ -374,17 +375,41 @@ void xrstor(const union savefpu *, uint64_t);
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. */