blob: 1616562683e9a50d9a089528a040a1774d6e6438 [file] [log] [blame]
Frederic Weisbecker91d1aa432012-11-27 19:33:25 +01001#ifndef _ASM_X86_CONTEXT_TRACKING_H
2#define _ASM_X86_CONTEXT_TRACKING_H
Frederic Weisbecker6ba3c972012-07-11 20:26:35 +02003
Frederic Weisbecker04304992012-07-11 20:26:38 +02004#ifndef __ASSEMBLY__
Frederic Weisbecker91d1aa432012-11-27 19:33:25 +01005#include <linux/context_tracking.h>
Frederic Weisbecker6ba3c972012-07-11 20:26:35 +02006#include <asm/ptrace.h>
7
8static inline void exception_enter(struct pt_regs *regs)
9{
Frederic Weisbecker91d1aa432012-11-27 19:33:25 +010010 user_exit();
Frederic Weisbecker6ba3c972012-07-11 20:26:35 +020011}
12
13static inline void exception_exit(struct pt_regs *regs)
14{
Frederic Weisbecker91d1aa432012-11-27 19:33:25 +010015#ifdef CONFIG_CONTEXT_TRACKING
Frederic Weisbecker6ba3c972012-07-11 20:26:35 +020016 if (user_mode(regs))
Frederic Weisbecker91d1aa432012-11-27 19:33:25 +010017 user_enter();
Frederic Weisbecker6ba3c972012-07-11 20:26:35 +020018#endif
19}
20
Frederic Weisbecker04304992012-07-11 20:26:38 +020021#else /* __ASSEMBLY__ */
22
Frederic Weisbecker91d1aa432012-11-27 19:33:25 +010023#ifdef CONFIG_CONTEXT_TRACKING
Frederic Weisbecker04304992012-07-11 20:26:38 +020024# define SCHEDULE_USER call schedule_user
25#else
26# define SCHEDULE_USER call schedule
27#endif
28
29#endif /* !__ASSEMBLY__ */
30
Frederic Weisbecker6ba3c972012-07-11 20:26:35 +020031#endif