sigcontext.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. #include <linux/types.h>
  9. #define __NUM_GPRS 16
  10. #define __NUM_FPRS 16
  11. #define __NUM_ACRS 16
  12. #define __NUM_VXRS 32
  13. #define __NUM_VXRS_LOW 16
  14. #define __NUM_VXRS_HIGH 16
  15. #ifndef __s390x__
  16. /* Has to be at least _NSIG_WORDS from asm/signal.h */
  17. #define _SIGCONTEXT_NSIG 64
  18. #define _SIGCONTEXT_NSIG_BPW 32
  19. /* Size of stack frame allocated when calling signal handler. */
  20. #define __SIGNAL_FRAMESIZE 96
  21. #else /* __s390x__ */
  22. /* Has to be at least _NSIG_WORDS from asm/signal.h */
  23. #define _SIGCONTEXT_NSIG 64
  24. #define _SIGCONTEXT_NSIG_BPW 64
  25. /* Size of stack frame allocated when calling signal handler. */
  26. #define __SIGNAL_FRAMESIZE 160
  27. #endif /* __s390x__ */
  28. #define _SIGCONTEXT_NSIG_WORDS (_SIGCONTEXT_NSIG / _SIGCONTEXT_NSIG_BPW)
  29. #define _SIGMASK_COPY_SIZE (sizeof(unsigned long)*_SIGCONTEXT_NSIG_WORDS)
  30. typedef struct
  31. {
  32. unsigned long mask;
  33. unsigned long addr;
  34. } __attribute__ ((aligned(8))) _psw_t;
  35. typedef struct
  36. {
  37. _psw_t psw;
  38. unsigned long gprs[__NUM_GPRS];
  39. unsigned int acrs[__NUM_ACRS];
  40. } _s390_regs_common;
  41. typedef struct
  42. {
  43. unsigned int fpc;
  44. unsigned int pad;
  45. double fprs[__NUM_FPRS];
  46. } _s390_fp_regs;
  47. typedef struct
  48. {
  49. _s390_regs_common regs;
  50. _s390_fp_regs fpregs;
  51. } _sigregs;
  52. typedef struct
  53. {
  54. #ifndef __s390x__
  55. unsigned long gprs_high[__NUM_GPRS];
  56. #endif
  57. unsigned long long vxrs_low[__NUM_VXRS_LOW];
  58. __vector128 vxrs_high[__NUM_VXRS_HIGH];
  59. unsigned char __reserved[128];
  60. } _sigregs_ext;
  61. struct sigcontext
  62. {
  63. unsigned long oldmask[_SIGCONTEXT_NSIG_WORDS];
  64. _sigregs __user *sregs;
  65. };
  66. #endif