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