sigcontext.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*
  2. * S390 version
  3. * Copyright IBM Corp. 1999, 2000
  4. */
  5. #ifndef _ASM_S390_SIGCONTEXT_H
  6. #define _ASM_S390_SIGCONTEXT_H
  7. #include <linux/compiler.h>
  8. #define __NUM_GPRS 16
  9. #define __NUM_FPRS 16
  10. #define __NUM_ACRS 16
  11. #ifndef __s390x__
  12. /* Has to be at least _NSIG_WORDS from asm/signal.h */
  13. #define _SIGCONTEXT_NSIG 64
  14. #define _SIGCONTEXT_NSIG_BPW 32
  15. /* Size of stack frame allocated when calling signal handler. */
  16. #define __SIGNAL_FRAMESIZE 96
  17. #else /* __s390x__ */
  18. /* Has to be at least _NSIG_WORDS from asm/signal.h */
  19. #define _SIGCONTEXT_NSIG 64
  20. #define _SIGCONTEXT_NSIG_BPW 64
  21. /* Size of stack frame allocated when calling signal handler. */
  22. #define __SIGNAL_FRAMESIZE 160
  23. #endif /* __s390x__ */
  24. #define _SIGCONTEXT_NSIG_WORDS (_SIGCONTEXT_NSIG / _SIGCONTEXT_NSIG_BPW)
  25. #define _SIGMASK_COPY_SIZE (sizeof(unsigned long)*_SIGCONTEXT_NSIG_WORDS)
  26. typedef struct
  27. {
  28. unsigned long mask;
  29. unsigned long addr;
  30. } __attribute__ ((aligned(8))) _psw_t;
  31. typedef struct
  32. {
  33. _psw_t psw;
  34. unsigned long gprs[__NUM_GPRS];
  35. unsigned int acrs[__NUM_ACRS];
  36. } _s390_regs_common;
  37. typedef struct
  38. {
  39. unsigned int fpc;
  40. double fprs[__NUM_FPRS];
  41. } _s390_fp_regs;
  42. typedef struct
  43. {
  44. _s390_regs_common regs;
  45. _s390_fp_regs fpregs;
  46. } _sigregs;
  47. struct sigcontext
  48. {
  49. unsigned long oldmask[_SIGCONTEXT_NSIG_WORDS];
  50. _sigregs __user *sregs;
  51. };
  52. #endif