ucontext.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /*-
  2. * SPDX-License-Identifier: BSD-4-Clause
  3. *
  4. * Copyright (C) 1995, 1996 Wolfgang Solfrank.
  5. * Copyright (C) 1995, 1996 TooLs GmbH.
  6. * All rights reserved.
  7. *
  8. * Redistribution and use in source and binary forms, with or without
  9. * modification, are permitted provided that the following conditions
  10. * are met:
  11. * 1. Redistributions of source code must retain the above copyright
  12. * notice, this list of conditions and the following disclaimer.
  13. * 2. Redistributions in binary form must reproduce the above copyright
  14. * notice, this list of conditions and the following disclaimer in the
  15. * documentation and/or other materials provided with the distribution.
  16. * 3. All advertising materials mentioning features or use of this software
  17. * must display the following acknowledgement:
  18. * This product includes software developed by TooLs GmbH.
  19. * 4. The name of TooLs GmbH may not be used to endorse or promote products
  20. * derived from this software without specific prior written permission.
  21. *
  22. * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
  23. * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  24. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  25. * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  26. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  27. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  28. * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  29. * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  30. * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  31. * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  32. *
  33. * $NetBSD: signal.h,v 1.4 1998/09/14 02:48:34 thorpej Exp $
  34. * $FreeBSD$
  35. */
  36. #ifndef _MACHINE_UCONTEXT_H_
  37. #define _MACHINE_UCONTEXT_H_
  38. typedef struct __mcontext {
  39. int mc_vers;
  40. int mc_flags;
  41. #define _MC_FP_VALID 0x01
  42. #define _MC_AV_VALID 0x02
  43. int mc_onstack; /* saved onstack flag */
  44. int mc_len; /* sizeof(__mcontext) */
  45. __uint64_t mc_avec[32*2]; /* vector register file */
  46. __uint32_t mc_av[2];
  47. __register_t mc_frame[42];
  48. __uint64_t mc_fpreg[33];
  49. __uint64_t mc_vsxfpreg[32]; /* low-order half of VSR0-31 */
  50. } mcontext_t __aligned(16);
  51. #if defined(_KERNEL) && defined(__powerpc64__)
  52. typedef struct __mcontext32 {
  53. int mc_vers;
  54. int mc_flags;
  55. #define _MC_FP_VALID 0x01
  56. #define _MC_AV_VALID 0x02
  57. int mc_onstack; /* saved onstack flag */
  58. int mc_len; /* sizeof(__mcontext) */
  59. uint64_t mc_avec[32*2]; /* vector register file */
  60. uint32_t mc_av[2];
  61. uint32_t mc_frame[42];
  62. uint64_t mc_fpreg[33];
  63. uint64_t mc_vsxfpreg[32]; /* low-order half of VSR0-31 */
  64. } mcontext32_t __aligned(16);
  65. #endif
  66. /* GPRs and supervisor-level regs */
  67. #define mc_gpr mc_frame
  68. #define mc_lr mc_frame[32]
  69. #define mc_cr mc_frame[33]
  70. #define mc_xer mc_frame[34]
  71. #define mc_ctr mc_frame[35]
  72. #define mc_srr0 mc_frame[36]
  73. #define mc_srr1 mc_frame[37]
  74. #define mc_exc mc_frame[38]
  75. #define mc_dar mc_frame[39]
  76. #define mc_dsisr mc_frame[40]
  77. /* floating-point state */
  78. #define mc_fpscr mc_fpreg[32]
  79. /* altivec state */
  80. #define mc_vscr mc_av[0]
  81. #define mc_vrsave mc_av[1]
  82. #define _MC_VERSION 0x1
  83. #define _MC_VERSION_KSE 0xee /* partial ucontext for libpthread */
  84. #endif /* !_MACHINE_UCONTEXT_H_ */