diff options
Diffstat (limited to 'arch/arm/kernel/signal.c')
-rw-r--r-- | arch/arm/kernel/signal.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index 907d5a620bca..cb8398317644 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <asm/unistd.h> | 20 | #include <asm/unistd.h> |
21 | #include <asm/vfp.h> | 21 | #include <asm/vfp.h> |
22 | 22 | ||
23 | #include "ptrace.h" | ||
24 | #include "signal.h" | 23 | #include "signal.h" |
25 | 24 | ||
26 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) | 25 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) |
@@ -348,8 +347,6 @@ asmlinkage int sys_sigreturn(struct pt_regs *regs) | |||
348 | if (restore_sigframe(regs, frame)) | 347 | if (restore_sigframe(regs, frame)) |
349 | goto badframe; | 348 | goto badframe; |
350 | 349 | ||
351 | single_step_trap(current); | ||
352 | |||
353 | return regs->ARM_r0; | 350 | return regs->ARM_r0; |
354 | 351 | ||
355 | badframe: | 352 | badframe: |
@@ -383,8 +380,6 @@ asmlinkage int sys_rt_sigreturn(struct pt_regs *regs) | |||
383 | if (do_sigaltstack(&frame->sig.uc.uc_stack, NULL, regs->ARM_sp) == -EFAULT) | 380 | if (do_sigaltstack(&frame->sig.uc.uc_stack, NULL, regs->ARM_sp) == -EFAULT) |
384 | goto badframe; | 381 | goto badframe; |
385 | 382 | ||
386 | single_step_trap(current); | ||
387 | |||
388 | return regs->ARM_r0; | 383 | return regs->ARM_r0; |
389 | 384 | ||
390 | badframe: | 385 | badframe: |
@@ -474,7 +469,9 @@ setup_return(struct pt_regs *regs, struct k_sigaction *ka, | |||
474 | unsigned long handler = (unsigned long)ka->sa.sa_handler; | 469 | unsigned long handler = (unsigned long)ka->sa.sa_handler; |
475 | unsigned long retcode; | 470 | unsigned long retcode; |
476 | int thumb = 0; | 471 | int thumb = 0; |
477 | unsigned long cpsr = regs->ARM_cpsr & ~PSR_f; | 472 | unsigned long cpsr = regs->ARM_cpsr & ~(PSR_f | PSR_E_BIT); |
473 | |||
474 | cpsr |= PSR_ENDSTATE; | ||
478 | 475 | ||
479 | /* | 476 | /* |
480 | * Maybe we need to deliver a 32-bit signal to a 26-bit task. | 477 | * Maybe we need to deliver a 32-bit signal to a 26-bit task. |
@@ -704,8 +701,6 @@ static void do_signal(struct pt_regs *regs, int syscall) | |||
704 | if (try_to_freeze()) | 701 | if (try_to_freeze()) |
705 | goto no_signal; | 702 | goto no_signal; |
706 | 703 | ||
707 | single_step_clear(current); | ||
708 | |||
709 | signr = get_signal_to_deliver(&info, &ka, regs, NULL); | 704 | signr = get_signal_to_deliver(&info, &ka, regs, NULL); |
710 | if (signr > 0) { | 705 | if (signr > 0) { |
711 | sigset_t *oldset; | 706 | sigset_t *oldset; |
@@ -724,7 +719,6 @@ static void do_signal(struct pt_regs *regs, int syscall) | |||
724 | if (test_thread_flag(TIF_RESTORE_SIGMASK)) | 719 | if (test_thread_flag(TIF_RESTORE_SIGMASK)) |
725 | clear_thread_flag(TIF_RESTORE_SIGMASK); | 720 | clear_thread_flag(TIF_RESTORE_SIGMASK); |
726 | } | 721 | } |
727 | single_step_set(current); | ||
728 | return; | 722 | return; |
729 | } | 723 | } |
730 | 724 | ||
@@ -770,7 +764,6 @@ static void do_signal(struct pt_regs *regs, int syscall) | |||
770 | sigprocmask(SIG_SETMASK, ¤t->saved_sigmask, NULL); | 764 | sigprocmask(SIG_SETMASK, ¤t->saved_sigmask, NULL); |
771 | } | 765 | } |
772 | } | 766 | } |
773 | single_step_set(current); | ||
774 | } | 767 | } |
775 | 768 | ||
776 | asmlinkage void | 769 | asmlinkage void |