aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/signal.h
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2007-06-04 03:22:48 -0400
committerPaul Mackerras <paulus@samba.org>2007-06-14 08:29:58 -0400
commita3f61dc0a5335334958ec3b97d0b1946b4ae5375 (patch)
treee7b151d724dca73220d8346c2a0c2a3525c5c91c /arch/powerpc/kernel/signal.h
parent5f9f375a62d3fd3d7f0d5adc23039ade523e62ba (diff)
[POWERPC] Merge creation of signal frame
The code for creating signal frames was still duplicated and split in strange ways between 32 and 64 bits, including the SA_ONSTACK handling being in do_signal on 32 bits but inside handle_rt_signal on 64 bits etc... This moves the 64 bits get_sigframe() to the generic signal.c, cleans it a bit, moves the access_ok() call done by all callers to it as well, and adapts/cleanups the 3 different signal handling cases to use that common function. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/kernel/signal.h')
-rw-r--r--arch/powerpc/kernel/signal.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/signal.h b/arch/powerpc/kernel/signal.h
index 190d4325f974..c284f75afe77 100644
--- a/arch/powerpc/kernel/signal.h
+++ b/arch/powerpc/kernel/signal.h
@@ -12,15 +12,17 @@
12 12
13#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) 13#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
14 14
15extern void __user * get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
16 size_t frame_size);
15extern void restore_sigmask(sigset_t *set); 17extern void restore_sigmask(sigset_t *set);
16 18
17extern int handle_signal32(unsigned long sig, struct k_sigaction *ka, 19extern int handle_signal32(unsigned long sig, struct k_sigaction *ka,
18 siginfo_t *info, sigset_t *oldset, 20 siginfo_t *info, sigset_t *oldset,
19 struct pt_regs *regs, unsigned long newsp); 21 struct pt_regs *regs);
20 22
21extern int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka, 23extern int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka,
22 siginfo_t *info, sigset_t *oldset, 24 siginfo_t *info, sigset_t *oldset,
23 struct pt_regs *regs, unsigned long newsp); 25 struct pt_regs *regs);
24 26
25extern int handle_rt_signal64(int signr, struct k_sigaction *ka, 27extern int handle_rt_signal64(int signr, struct k_sigaction *ka,
26 siginfo_t *info, sigset_t *set, 28 siginfo_t *info, sigset_t *set,