diff options
Diffstat (limited to 'arch/mn10300')
-rw-r--r-- | arch/mn10300/kernel/entry.S | 4 | ||||
-rw-r--r-- | arch/mn10300/kernel/signal.c | 5 |
2 files changed, 4 insertions, 5 deletions
diff --git a/arch/mn10300/kernel/entry.S b/arch/mn10300/kernel/entry.S index 7dee5f6a1416..0c631d34c8d7 100644 --- a/arch/mn10300/kernel/entry.S +++ b/arch/mn10300/kernel/entry.S | |||
@@ -108,6 +108,10 @@ restore_all: | |||
108 | ############################################################################### | 108 | ############################################################################### |
109 | ALIGN | 109 | ALIGN |
110 | syscall_exit_work: | 110 | syscall_exit_work: |
111 | mov (REG_EPSW,fp),d0 | ||
112 | and EPSW_nSL,d0 | ||
113 | beq resume_kernel # returning to supervisor mode | ||
114 | |||
111 | btst _TIF_SYSCALL_TRACE,d2 | 115 | btst _TIF_SYSCALL_TRACE,d2 |
112 | beq work_pending | 116 | beq work_pending |
113 | LOCAL_IRQ_ENABLE # could let syscall_trace_exit() call | 117 | LOCAL_IRQ_ENABLE # could let syscall_trace_exit() call |
diff --git a/arch/mn10300/kernel/signal.c b/arch/mn10300/kernel/signal.c index 4d584ae29ae1..b2c0ac715128 100644 --- a/arch/mn10300/kernel/signal.c +++ b/arch/mn10300/kernel/signal.c | |||
@@ -475,11 +475,6 @@ static void do_signal(struct pt_regs *regs) | |||
475 | siginfo_t info; | 475 | siginfo_t info; |
476 | int signr; | 476 | int signr; |
477 | 477 | ||
478 | /* we want the common case to go fast, which is why we may in certain | ||
479 | * cases get here from kernel mode */ | ||
480 | if (!user_mode(regs)) | ||
481 | return; | ||
482 | |||
483 | signr = get_signal_to_deliver(&info, &ka, regs, NULL); | 478 | signr = get_signal_to_deliver(&info, &ka, regs, NULL); |
484 | if (signr > 0) { | 479 | if (signr > 0) { |
485 | if (handle_signal(signr, &info, &ka, regs) == 0) { | 480 | if (handle_signal(signr, &info, &ka, regs) == 0) { |