122e38f29328296d9d4cc33e46fd32a63e807abafBenjamin Herrenschmidt/*
222e38f29328296d9d4cc33e46fd32a63e807abafBenjamin Herrenschmidt *    Copyright (c) 2007 Benjamin Herrenschmidt, IBM Coproration
322e38f29328296d9d4cc33e46fd32a63e807abafBenjamin Herrenschmidt *    Extracted from signal_32.c and signal_64.c
422e38f29328296d9d4cc33e46fd32a63e807abafBenjamin Herrenschmidt *
522e38f29328296d9d4cc33e46fd32a63e807abafBenjamin Herrenschmidt * This file is subject to the terms and conditions of the GNU General
622e38f29328296d9d4cc33e46fd32a63e807abafBenjamin Herrenschmidt * Public License.  See the file README.legal in the main directory of
722e38f29328296d9d4cc33e46fd32a63e807abafBenjamin Herrenschmidt * this archive for more details.
822e38f29328296d9d4cc33e46fd32a63e807abafBenjamin Herrenschmidt */
922e38f29328296d9d4cc33e46fd32a63e807abafBenjamin Herrenschmidt
1022e38f29328296d9d4cc33e46fd32a63e807abafBenjamin Herrenschmidt#ifndef _POWERPC_ARCH_SIGNAL_H
1122e38f29328296d9d4cc33e46fd32a63e807abafBenjamin Herrenschmidt#define _POWERPC_ARCH_SIGNAL_H
1222e38f29328296d9d4cc33e46fd32a63e807abafBenjamin Herrenschmidt
1318b246fa60dd4bfc71c78d669e2ffaa5df454d6aBenjamin Herrenschmidtextern void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags);
142e074004c6b71a93c8e08c0dd5e3cec0b92ad0e5Al Viro
15129b69df9c9074750245fca8aa92df5cc1a86ef4Richard Weinbergerextern void __user *get_sigframe(struct ksignal *ksig, unsigned long sp,
16efbda86098455da014be849713df6498cefc5a2aJosh Boyer				  size_t frame_size, int is_32);
17f478f5430c8a599f46c41e8172a507a5772a6b69Christoph Hellwig
18129b69df9c9074750245fca8aa92df5cc1a86ef4Richard Weinbergerextern int handle_signal32(struct ksignal *ksig, sigset_t *oldset,
19a3f61dc0a5335334958ec3b97d0b1946b4ae5375Benjamin Herrenschmidt			   struct pt_regs *regs);
20f478f5430c8a599f46c41e8172a507a5772a6b69Christoph Hellwig
21129b69df9c9074750245fca8aa92df5cc1a86ef4Richard Weinbergerextern int handle_rt_signal32(struct ksignal *ksig, sigset_t *oldset,
22a3f61dc0a5335334958ec3b97d0b1946b4ae5375Benjamin Herrenschmidt			      struct pt_regs *regs);
23f478f5430c8a599f46c41e8172a507a5772a6b69Christoph Hellwig
246a274c08f2f4dfac7167bbd849621f3a2b55d424Michael Neulingextern unsigned long copy_fpr_to_user(void __user *to,
256a274c08f2f4dfac7167bbd849621f3a2b55d424Michael Neuling				      struct task_struct *task);
262b0a576d15e0e14751f00f9c87e46bad27f217e7Michael Neulingextern unsigned long copy_transact_fpr_to_user(void __user *to,
272b0a576d15e0e14751f00f9c87e46bad27f217e7Michael Neuling					       struct task_struct *task);
286a274c08f2f4dfac7167bbd849621f3a2b55d424Michael Neulingextern unsigned long copy_fpr_from_user(struct task_struct *task,
296a274c08f2f4dfac7167bbd849621f3a2b55d424Michael Neuling					void __user *from);
302b0a576d15e0e14751f00f9c87e46bad27f217e7Michael Neulingextern unsigned long copy_transact_fpr_from_user(struct task_struct *task,
312b0a576d15e0e14751f00f9c87e46bad27f217e7Michael Neuling						 void __user *from);
326a274c08f2f4dfac7167bbd849621f3a2b55d424Michael Neuling#ifdef CONFIG_VSX
336a274c08f2f4dfac7167bbd849621f3a2b55d424Michael Neulingextern unsigned long copy_vsx_to_user(void __user *to,
346a274c08f2f4dfac7167bbd849621f3a2b55d424Michael Neuling				      struct task_struct *task);
352b0a576d15e0e14751f00f9c87e46bad27f217e7Michael Neulingextern unsigned long copy_transact_vsx_to_user(void __user *to,
362b0a576d15e0e14751f00f9c87e46bad27f217e7Michael Neuling					       struct task_struct *task);
376a274c08f2f4dfac7167bbd849621f3a2b55d424Michael Neulingextern unsigned long copy_vsx_from_user(struct task_struct *task,
386a274c08f2f4dfac7167bbd849621f3a2b55d424Michael Neuling					void __user *from);
392b0a576d15e0e14751f00f9c87e46bad27f217e7Michael Neulingextern unsigned long copy_transact_vsx_from_user(struct task_struct *task,
402b0a576d15e0e14751f00f9c87e46bad27f217e7Michael Neuling						 void __user *from);
416a274c08f2f4dfac7167bbd849621f3a2b55d424Michael Neuling#endif
422f97cd3912428f5044fa7715293a69349fc455faBenjamin Herrenschmidt
432f97cd3912428f5044fa7715293a69349fc455faBenjamin Herrenschmidt#ifdef CONFIG_PPC64
442f97cd3912428f5044fa7715293a69349fc455faBenjamin Herrenschmidt
45129b69df9c9074750245fca8aa92df5cc1a86ef4Richard Weinbergerextern int handle_rt_signal64(struct ksignal *ksig, sigset_t *set,
46f478f5430c8a599f46c41e8172a507a5772a6b69Christoph Hellwig			      struct pt_regs *regs);
4722e38f29328296d9d4cc33e46fd32a63e807abafBenjamin Herrenschmidt
482f97cd3912428f5044fa7715293a69349fc455faBenjamin Herrenschmidt#else /* CONFIG_PPC64 */
492f97cd3912428f5044fa7715293a69349fc455faBenjamin Herrenschmidt
50129b69df9c9074750245fca8aa92df5cc1a86ef4Richard Weinbergerstatic inline int handle_rt_signal64(struct ksignal *ksig, sigset_t *set,
512f97cd3912428f5044fa7715293a69349fc455faBenjamin Herrenschmidt				     struct pt_regs *regs)
522f97cd3912428f5044fa7715293a69349fc455faBenjamin Herrenschmidt{
532f97cd3912428f5044fa7715293a69349fc455faBenjamin Herrenschmidt	return -EFAULT;
542f97cd3912428f5044fa7715293a69349fc455faBenjamin Herrenschmidt}
552f97cd3912428f5044fa7715293a69349fc455faBenjamin Herrenschmidt
562f97cd3912428f5044fa7715293a69349fc455faBenjamin Herrenschmidt#endif /* !defined(CONFIG_PPC64) */
572f97cd3912428f5044fa7715293a69349fc455faBenjamin Herrenschmidt
5822e38f29328296d9d4cc33e46fd32a63e807abafBenjamin Herrenschmidt#endif  /* _POWERPC_ARCH_SIGNAL_H */
59