Loading arch/xtensa/include/asm/syscall.h +0 −2 Original line number Diff line number Diff line Loading @@ -15,8 +15,6 @@ asmlinkage long xtensa_clone(unsigned long, unsigned long, struct pt_regs*); asmlinkage long xtensa_ptrace(long, long, long, long); asmlinkage long xtensa_sigreturn(struct pt_regs*); asmlinkage long xtensa_rt_sigreturn(struct pt_regs*); asmlinkage long xtensa_sigsuspend(struct pt_regs*); asmlinkage long xtensa_rt_sigsuspend(struct pt_regs*); asmlinkage long xtensa_sigaction(int, const struct old_sigaction*, struct old_sigaction*); asmlinkage long xtensa_sigaltstack(struct pt_regs *regs); Loading arch/xtensa/include/asm/unistd.h +1 −1 Original line number Diff line number Diff line Loading @@ -507,7 +507,7 @@ __SYSCALL(229, sys_rt_sigtimedwait, 4) #define __NR_rt_sigqueueinfo 230 __SYSCALL(230, sys_rt_sigqueueinfo, 3) #define __NR_rt_sigsuspend 231 __SYSCALL(231, xtensa_rt_sigsuspend, 2) __SYSCALL(231, sys_rt_sigsuspend, 2) /* Message */ Loading arch/xtensa/kernel/entry.S +0 −1 Original line number Diff line number Diff line Loading @@ -418,7 +418,6 @@ common_exception_return: movi a4, do_signal # int do_signal(struct pt_regs*, sigset_t*) mov a6, a1 movi a7, 0 callx4 a4 j 1b Loading arch/xtensa/kernel/signal.c +15 −39 Original line number Diff line number Diff line Loading @@ -31,8 +31,6 @@ #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) asmlinkage int do_signal(struct pt_regs *regs, sigset_t *oldset); extern struct task_struct *coproc_owners[]; struct rt_sigframe Loading Loading @@ -429,37 +427,6 @@ static int setup_frame(int sig, struct k_sigaction *ka, siginfo_t *info, return -EFAULT; } /* * Atomically swap in the new signal mask, and wait for a signal. */ asmlinkage long xtensa_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize, long a2, long a3, long a4, long a5, struct pt_regs *regs) { sigset_t saveset, newset; /* XXX: Don't preclude handling different sized sigset_t's. */ if (sigsetsize != sizeof(sigset_t)) return -EINVAL; if (copy_from_user(&newset, unewset, sizeof(newset))) return -EFAULT; sigdelsetmask(&newset, ~_BLOCKABLE); saveset = current->blocked; set_current_blocked(&newset); regs->areg[2] = -EINTR; while (1) { current->state = TASK_INTERRUPTIBLE; schedule(); if (do_signal(regs, &saveset)) return -EINTR; } } asmlinkage long xtensa_sigaltstack(const stack_t __user *uss, stack_t __user *uoss, long a2, long a3, long a4, long a5, Loading @@ -479,19 +446,22 @@ asmlinkage long xtensa_sigaltstack(const stack_t __user *uss, * the kernel can handle, and then we build all the user-level signal handling * stack-frames in one go after that. */ int do_signal(struct pt_regs *regs, sigset_t *oldset) void do_signal(struct pt_regs *regs) { siginfo_t info; int signr; struct k_sigaction ka; sigset_t oldset; if (!user_mode(regs)) return 0; return; if (try_to_freeze()) goto no_signal; if (!oldset) if (test_thread_flag(TIF_RESTORE_SIGMASK)) oldset = ¤t->saved_sigmask; else oldset = ¤t->blocked; task_pt_regs(current)->icountlevel = 0; Loading Loading @@ -535,13 +505,14 @@ int do_signal(struct pt_regs *regs, sigset_t *oldset) /* Set up the stack frame */ ret = setup_frame(signr, &ka, &info, oldset, regs); if (ret) return ret; return; clear_thread_flag(TIF_RESTORE_SIGMASK); block_sigmask(&ka, signr); if (current->ptrace & PT_SINGLESTEP) task_pt_regs(current)->icountlevel = 1; return 1; return; } no_signal: Loading @@ -561,8 +532,13 @@ int do_signal(struct pt_regs *regs, sigset_t *oldset) break; } } /* If there's no signal to deliver, we just restore the saved mask. */ if (test_and_clear_thread_flag(TIF_RESTORE_SIGMASK)) set_current_blocked(¤t->saved_sigmask); if (current->ptrace & PT_SINGLESTEP) task_pt_regs(current)->icountlevel = 1; return 0; return; } Loading
arch/xtensa/include/asm/syscall.h +0 −2 Original line number Diff line number Diff line Loading @@ -15,8 +15,6 @@ asmlinkage long xtensa_clone(unsigned long, unsigned long, struct pt_regs*); asmlinkage long xtensa_ptrace(long, long, long, long); asmlinkage long xtensa_sigreturn(struct pt_regs*); asmlinkage long xtensa_rt_sigreturn(struct pt_regs*); asmlinkage long xtensa_sigsuspend(struct pt_regs*); asmlinkage long xtensa_rt_sigsuspend(struct pt_regs*); asmlinkage long xtensa_sigaction(int, const struct old_sigaction*, struct old_sigaction*); asmlinkage long xtensa_sigaltstack(struct pt_regs *regs); Loading
arch/xtensa/include/asm/unistd.h +1 −1 Original line number Diff line number Diff line Loading @@ -507,7 +507,7 @@ __SYSCALL(229, sys_rt_sigtimedwait, 4) #define __NR_rt_sigqueueinfo 230 __SYSCALL(230, sys_rt_sigqueueinfo, 3) #define __NR_rt_sigsuspend 231 __SYSCALL(231, xtensa_rt_sigsuspend, 2) __SYSCALL(231, sys_rt_sigsuspend, 2) /* Message */ Loading
arch/xtensa/kernel/entry.S +0 −1 Original line number Diff line number Diff line Loading @@ -418,7 +418,6 @@ common_exception_return: movi a4, do_signal # int do_signal(struct pt_regs*, sigset_t*) mov a6, a1 movi a7, 0 callx4 a4 j 1b Loading
arch/xtensa/kernel/signal.c +15 −39 Original line number Diff line number Diff line Loading @@ -31,8 +31,6 @@ #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) asmlinkage int do_signal(struct pt_regs *regs, sigset_t *oldset); extern struct task_struct *coproc_owners[]; struct rt_sigframe Loading Loading @@ -429,37 +427,6 @@ static int setup_frame(int sig, struct k_sigaction *ka, siginfo_t *info, return -EFAULT; } /* * Atomically swap in the new signal mask, and wait for a signal. */ asmlinkage long xtensa_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize, long a2, long a3, long a4, long a5, struct pt_regs *regs) { sigset_t saveset, newset; /* XXX: Don't preclude handling different sized sigset_t's. */ if (sigsetsize != sizeof(sigset_t)) return -EINVAL; if (copy_from_user(&newset, unewset, sizeof(newset))) return -EFAULT; sigdelsetmask(&newset, ~_BLOCKABLE); saveset = current->blocked; set_current_blocked(&newset); regs->areg[2] = -EINTR; while (1) { current->state = TASK_INTERRUPTIBLE; schedule(); if (do_signal(regs, &saveset)) return -EINTR; } } asmlinkage long xtensa_sigaltstack(const stack_t __user *uss, stack_t __user *uoss, long a2, long a3, long a4, long a5, Loading @@ -479,19 +446,22 @@ asmlinkage long xtensa_sigaltstack(const stack_t __user *uss, * the kernel can handle, and then we build all the user-level signal handling * stack-frames in one go after that. */ int do_signal(struct pt_regs *regs, sigset_t *oldset) void do_signal(struct pt_regs *regs) { siginfo_t info; int signr; struct k_sigaction ka; sigset_t oldset; if (!user_mode(regs)) return 0; return; if (try_to_freeze()) goto no_signal; if (!oldset) if (test_thread_flag(TIF_RESTORE_SIGMASK)) oldset = ¤t->saved_sigmask; else oldset = ¤t->blocked; task_pt_regs(current)->icountlevel = 0; Loading Loading @@ -535,13 +505,14 @@ int do_signal(struct pt_regs *regs, sigset_t *oldset) /* Set up the stack frame */ ret = setup_frame(signr, &ka, &info, oldset, regs); if (ret) return ret; return; clear_thread_flag(TIF_RESTORE_SIGMASK); block_sigmask(&ka, signr); if (current->ptrace & PT_SINGLESTEP) task_pt_regs(current)->icountlevel = 1; return 1; return; } no_signal: Loading @@ -561,8 +532,13 @@ int do_signal(struct pt_regs *regs, sigset_t *oldset) break; } } /* If there's no signal to deliver, we just restore the saved mask. */ if (test_and_clear_thread_flag(TIF_RESTORE_SIGMASK)) set_current_blocked(¤t->saved_sigmask); if (current->ptrace & PT_SINGLESTEP) task_pt_regs(current)->icountlevel = 1; return 0; return; }