signal-common.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. * This file is subject to the terms and conditions of the GNU General Public
  3. * License. See the file "COPYING" in the main directory of this archive
  4. * for more details.
  5. *
  6. * Copyright (C) 1991, 1992 Linus Torvalds
  7. * Copyright (C) 1994 - 2000 Ralf Baechle
  8. * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
  9. */
  10. #ifndef __SIGNAL_COMMON_H
  11. #define __SIGNAL_COMMON_H
  12. /* #define DEBUG_SIG */
  13. #ifdef DEBUG_SIG
  14. # define DEBUGP(fmt, args...) printk("%s: " fmt, __FUNCTION__ , ##args)
  15. #else
  16. # define DEBUGP(fmt, args...)
  17. #endif
  18. /*
  19. * Horribly complicated - with the bloody RM9000 workarounds enabled
  20. * the signal trampolines is moving to the end of the structure so we can
  21. * increase the alignment without breaking software compatibility.
  22. */
  23. #if ICACHE_REFILLS_WORKAROUND_WAR == 0
  24. struct sigframe {
  25. u32 sf_ass[4]; /* argument save space for o32 */
  26. u32 sf_code[2]; /* signal trampoline */
  27. struct sigcontext sf_sc;
  28. sigset_t sf_mask;
  29. };
  30. #else /* ICACHE_REFILLS_WORKAROUND_WAR */
  31. struct sigframe {
  32. u32 sf_ass[4]; /* argument save space for o32 */
  33. u32 sf_pad[2];
  34. struct sigcontext sf_sc; /* hw context */
  35. sigset_t sf_mask;
  36. u32 sf_code[8] ____cacheline_aligned; /* signal trampoline */
  37. };
  38. #endif /* !ICACHE_REFILLS_WORKAROUND_WAR */
  39. /*
  40. * handle hardware context
  41. */
  42. extern int setup_sigcontext(struct pt_regs *, struct sigcontext __user *);
  43. extern int restore_sigcontext(struct pt_regs *, struct sigcontext __user *);
  44. /*
  45. * Determine which stack to use..
  46. */
  47. extern void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
  48. size_t frame_size);
  49. /*
  50. * install trampoline code to get back from the sig handler
  51. */
  52. extern int install_sigtramp(unsigned int __user *tramp, unsigned int syscall);
  53. #endif /* __SIGNAL_COMMON_H */