Frederic Weisbecker | 91d1aa43 | 2012-11-27 19:33:25 +0100 | [diff] [blame^] | 1 | #ifndef _ASM_X86_CONTEXT_TRACKING_H |
| 2 | #define _ASM_X86_CONTEXT_TRACKING_H |
Frederic Weisbecker | 6ba3c97 | 2012-07-11 20:26:35 +0200 | [diff] [blame] | 3 | |
Frederic Weisbecker | 0430499 | 2012-07-11 20:26:38 +0200 | [diff] [blame] | 4 | #ifndef __ASSEMBLY__ |
Frederic Weisbecker | 91d1aa43 | 2012-11-27 19:33:25 +0100 | [diff] [blame^] | 5 | #include <linux/context_tracking.h> |
Frederic Weisbecker | 6ba3c97 | 2012-07-11 20:26:35 +0200 | [diff] [blame] | 6 | #include <asm/ptrace.h> |
| 7 | |
| 8 | static inline void exception_enter(struct pt_regs *regs) |
| 9 | { |
Frederic Weisbecker | 91d1aa43 | 2012-11-27 19:33:25 +0100 | [diff] [blame^] | 10 | user_exit(); |
Frederic Weisbecker | 6ba3c97 | 2012-07-11 20:26:35 +0200 | [diff] [blame] | 11 | } |
| 12 | |
| 13 | static inline void exception_exit(struct pt_regs *regs) |
| 14 | { |
Frederic Weisbecker | 91d1aa43 | 2012-11-27 19:33:25 +0100 | [diff] [blame^] | 15 | #ifdef CONFIG_CONTEXT_TRACKING |
Frederic Weisbecker | 6ba3c97 | 2012-07-11 20:26:35 +0200 | [diff] [blame] | 16 | if (user_mode(regs)) |
Frederic Weisbecker | 91d1aa43 | 2012-11-27 19:33:25 +0100 | [diff] [blame^] | 17 | user_enter(); |
Frederic Weisbecker | 6ba3c97 | 2012-07-11 20:26:35 +0200 | [diff] [blame] | 18 | #endif |
| 19 | } |
| 20 | |
Frederic Weisbecker | 0430499 | 2012-07-11 20:26:38 +0200 | [diff] [blame] | 21 | #else /* __ASSEMBLY__ */ |
| 22 | |
Frederic Weisbecker | 91d1aa43 | 2012-11-27 19:33:25 +0100 | [diff] [blame^] | 23 | #ifdef CONFIG_CONTEXT_TRACKING |
Frederic Weisbecker | 0430499 | 2012-07-11 20:26:38 +0200 | [diff] [blame] | 24 | # define SCHEDULE_USER call schedule_user |
| 25 | #else |
| 26 | # define SCHEDULE_USER call schedule |
| 27 | #endif |
| 28 | |
| 29 | #endif /* !__ASSEMBLY__ */ |
| 30 | |
Frederic Weisbecker | 6ba3c97 | 2012-07-11 20:26:35 +0200 | [diff] [blame] | 31 | #endif |