diff options
Diffstat (limited to 'arch/tile/kernel/process.c')
-rw-r--r-- | arch/tile/kernel/process.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c index 48e5773dd0b7..b403c2e3e263 100644 --- a/arch/tile/kernel/process.c +++ b/arch/tile/kernel/process.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/kernel.h> | 27 | #include <linux/kernel.h> |
28 | #include <linux/tracehook.h> | 28 | #include <linux/tracehook.h> |
29 | #include <linux/signal.h> | 29 | #include <linux/signal.h> |
30 | #include <linux/context_tracking.h> | ||
30 | #include <asm/stack.h> | 31 | #include <asm/stack.h> |
31 | #include <asm/switch_to.h> | 32 | #include <asm/switch_to.h> |
32 | #include <asm/homecache.h> | 33 | #include <asm/homecache.h> |
@@ -474,6 +475,8 @@ int do_work_pending(struct pt_regs *regs, u32 thread_info_flags) | |||
474 | if (!user_mode(regs)) | 475 | if (!user_mode(regs)) |
475 | return 0; | 476 | return 0; |
476 | 477 | ||
478 | user_exit(); | ||
479 | |||
477 | /* Enable interrupts; they are disabled again on return to caller. */ | 480 | /* Enable interrupts; they are disabled again on return to caller. */ |
478 | local_irq_enable(); | 481 | local_irq_enable(); |
479 | 482 | ||
@@ -496,11 +499,12 @@ int do_work_pending(struct pt_regs *regs, u32 thread_info_flags) | |||
496 | tracehook_notify_resume(regs); | 499 | tracehook_notify_resume(regs); |
497 | return 1; | 500 | return 1; |
498 | } | 501 | } |
499 | if (thread_info_flags & _TIF_SINGLESTEP) { | 502 | if (thread_info_flags & _TIF_SINGLESTEP) |
500 | single_step_once(regs); | 503 | single_step_once(regs); |
501 | return 0; | 504 | |
502 | } | 505 | user_enter(); |
503 | panic("work_pending: bad flags %#x\n", thread_info_flags); | 506 | |
507 | return 0; | ||
504 | } | 508 | } |
505 | 509 | ||
506 | unsigned long get_wchan(struct task_struct *p) | 510 | unsigned long get_wchan(struct task_struct *p) |