diff options
Diffstat (limited to 'sys/arch')
| -rw-r--r-- | sys/arch/i386/conf/LOCKDOC | 2 | ||||
| -rw-r--r-- | sys/arch/i386/conf/files.i386 | 2 | ||||
| -rw-r--r-- | sys/arch/x86/include/cpufunc.h | 25 |
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. */ |
