aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel
diff options
context:
space:
mode:
authorRichard Weinberger <richard@nod.at>2014-03-05 07:38:04 -0500
committerRichard Weinberger <richard@sigma-star.at>2014-08-06 07:03:46 -0400
commite90670a9629a68c1bf5bbb59d0077684f22a5cb9 (patch)
tree08956c456ad3783661225b6853eee6db58b38aca /arch/blackfin/kernel
parent065f31bd263b61b1fbf6c0ae4e7c0d3cf7373b10 (diff)
blackfin: Use sigsp()
Use sigsp() instead of the open coded variant. Signed-off-by: Richard Weinberger <richard@nod.at> Acked-by: Steven Miao <realmz6@gmail.com>
Diffstat (limited to 'arch/blackfin/kernel')
-rw-r--r--arch/blackfin/kernel/signal.c14
1 files changed, 3 insertions, 11 deletions
diff --git a/arch/blackfin/kernel/signal.c b/arch/blackfin/kernel/signal.c
index 1389cd3b74e3..ef275571d885 100644
--- a/arch/blackfin/kernel/signal.c
+++ b/arch/blackfin/kernel/signal.c
@@ -135,19 +135,11 @@ static inline int rt_setup_sigcontext(struct sigcontext *sc, struct pt_regs *reg
135 return err; 135 return err;
136} 136}
137 137
138static inline void *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, 138static inline void *get_sigframe(struct ksignal *ksig,
139 size_t frame_size) 139 size_t frame_size)
140{ 140{
141 unsigned long usp; 141 unsigned long usp = sigsp(rdusp(), ksig);
142 142
143 /* Default to using normal stack. */
144 usp = rdusp();
145
146 /* This is the X/Open sanctioned signal stack switching. */
147 if (ka->sa.sa_flags & SA_ONSTACK) {
148 if (!on_sig_stack(usp))
149 usp = current->sas_ss_sp + current->sas_ss_size;
150 }
151 return (void *)((usp - frame_size) & -8UL); 143 return (void *)((usp - frame_size) & -8UL);
152} 144}
153 145
@@ -157,7 +149,7 @@ setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs)
157 struct rt_sigframe *frame; 149 struct rt_sigframe *frame;
158 int err = 0; 150 int err = 0;
159 151
160 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame)); 152 frame = get_sigframe(ksig, sizeof(*frame));
161 153
162 err |= __put_user((current_thread_info()->exec_domain 154 err |= __put_user((current_thread_info()->exec_domain
163 && current_thread_info()->exec_domain->signal_invmap 155 && current_thread_info()->exec_domain->signal_invmap