diff options
Diffstat (limited to 'sys/arch/x86/include/cpufunc.h')
| -rw-r--r-- | sys/arch/x86/include/cpufunc.h | 25 |
1 files changed, 25 insertions, 0 deletions
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. */ |
