gdb/s390-linux-tdep.h - gdb

Macros defined

Source code

  1. /* Target-dependent code for GDB, the GNU debugger.
  2.    Copyright (C) 2003-2015 Free Software Foundation, Inc.

  3.    This file is part of GDB.

  4.    This program is free software; you can redistribute it and/or modify
  5.    it under the terms of the GNU General Public License as published by
  6.    the Free Software Foundation; either version 3 of the License, or
  7.    (at your option) any later version.

  8.    This program is distributed in the hope that it will be useful,
  9.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11.    GNU General Public License for more details.

  12.    You should have received a copy of the GNU General Public License
  13.    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

  14. #ifndef S390_TDEP_H
  15. #define S390_TDEP_H

  16. /* Hardware capabilities. */

  17. #ifndef HWCAP_S390_HIGH_GPRS
  18. #define HWCAP_S390_HIGH_GPRS 512
  19. #endif

  20. #ifndef HWCAP_S390_TE
  21. #define HWCAP_S390_TE 1024
  22. #endif

  23. /* Register information.  */

  24. /* Program Status Word.  */
  25. #define S390_PSWM_REGNUM 0
  26. #define S390_PSWA_REGNUM 1
  27. /* General Purpose Registers.  */
  28. #define S390_R0_REGNUM 2
  29. #define S390_R1_REGNUM 3
  30. #define S390_R2_REGNUM 4
  31. #define S390_R3_REGNUM 5
  32. #define S390_R4_REGNUM 6
  33. #define S390_R5_REGNUM 7
  34. #define S390_R6_REGNUM 8
  35. #define S390_R7_REGNUM 9
  36. #define S390_R8_REGNUM 10
  37. #define S390_R9_REGNUM 11
  38. #define S390_R10_REGNUM 12
  39. #define S390_R11_REGNUM 13
  40. #define S390_R12_REGNUM 14
  41. #define S390_R13_REGNUM 15
  42. #define S390_R14_REGNUM 16
  43. #define S390_R15_REGNUM 17
  44. /* Access Registers.  */
  45. #define S390_A0_REGNUM 18
  46. #define S390_A1_REGNUM 19
  47. #define S390_A2_REGNUM 20
  48. #define S390_A3_REGNUM 21
  49. #define S390_A4_REGNUM 22
  50. #define S390_A5_REGNUM 23
  51. #define S390_A6_REGNUM 24
  52. #define S390_A7_REGNUM 25
  53. #define S390_A8_REGNUM 26
  54. #define S390_A9_REGNUM 27
  55. #define S390_A10_REGNUM 28
  56. #define S390_A11_REGNUM 29
  57. #define S390_A12_REGNUM 30
  58. #define S390_A13_REGNUM 31
  59. #define S390_A14_REGNUM 32
  60. #define S390_A15_REGNUM 33
  61. /* Floating Point Control Word.  */
  62. #define S390_FPC_REGNUM 34
  63. /* Floating Point Registers.  */
  64. #define S390_F0_REGNUM 35
  65. #define S390_F1_REGNUM 36
  66. #define S390_F2_REGNUM 37
  67. #define S390_F3_REGNUM 38
  68. #define S390_F4_REGNUM 39
  69. #define S390_F5_REGNUM 40
  70. #define S390_F6_REGNUM 41
  71. #define S390_F7_REGNUM 42
  72. #define S390_F8_REGNUM 43
  73. #define S390_F9_REGNUM 44
  74. #define S390_F10_REGNUM 45
  75. #define S390_F11_REGNUM 46
  76. #define S390_F12_REGNUM 47
  77. #define S390_F13_REGNUM 48
  78. #define S390_F14_REGNUM 49
  79. #define S390_F15_REGNUM 50
  80. /* General Purpose Register Upper Halves.  */
  81. #define S390_R0_UPPER_REGNUM 51
  82. #define S390_R1_UPPER_REGNUM 52
  83. #define S390_R2_UPPER_REGNUM 53
  84. #define S390_R3_UPPER_REGNUM 54
  85. #define S390_R4_UPPER_REGNUM 55
  86. #define S390_R5_UPPER_REGNUM 56
  87. #define S390_R6_UPPER_REGNUM 57
  88. #define S390_R7_UPPER_REGNUM 58
  89. #define S390_R8_UPPER_REGNUM 59
  90. #define S390_R9_UPPER_REGNUM 60
  91. #define S390_R10_UPPER_REGNUM 61
  92. #define S390_R11_UPPER_REGNUM 62
  93. #define S390_R12_UPPER_REGNUM 63
  94. #define S390_R13_UPPER_REGNUM 64
  95. #define S390_R14_UPPER_REGNUM 65
  96. #define S390_R15_UPPER_REGNUM 66
  97. /* GNU/Linux-specific optional registers.  */
  98. #define S390_ORIG_R2_REGNUM 67
  99. #define S390_LAST_BREAK_REGNUM 68
  100. #define S390_SYSTEM_CALL_REGNUM 69
  101. /* Transaction diagnostic block.  */
  102. #define S390_TDB_DWORD0_REGNUM 70
  103. #define S390_TDB_ABORT_CODE_REGNUM 71
  104. #define S390_TDB_CONFLICT_TOKEN_REGNUM 72
  105. #define S390_TDB_ATIA_REGNUM 73
  106. #define S390_TDB_R0_REGNUM 74
  107. #define S390_TDB_R1_REGNUM 75
  108. #define S390_TDB_R2_REGNUM 76
  109. #define S390_TDB_R3_REGNUM 77
  110. #define S390_TDB_R4_REGNUM 78
  111. #define S390_TDB_R5_REGNUM 79
  112. #define S390_TDB_R6_REGNUM 80
  113. #define S390_TDB_R7_REGNUM 81
  114. #define S390_TDB_R8_REGNUM 82
  115. #define S390_TDB_R9_REGNUM 83
  116. #define S390_TDB_R10_REGNUM 84
  117. #define S390_TDB_R11_REGNUM 85
  118. #define S390_TDB_R12_REGNUM 86
  119. #define S390_TDB_R13_REGNUM 87
  120. #define S390_TDB_R14_REGNUM 88
  121. #define S390_TDB_R15_REGNUM 89
  122. /* Total.  */
  123. #define S390_NUM_REGS 90

  124. /* Special register usage.  */
  125. #define S390_SP_REGNUM S390_R15_REGNUM
  126. #define S390_RETADDR_REGNUM S390_R14_REGNUM
  127. #define S390_FRAME_REGNUM S390_R11_REGNUM

  128. #define S390_IS_GREGSET_REGNUM(i)                                        \
  129.   (((i) >= S390_PSWM_REGNUM && (i) <= S390_A15_REGNUM)                        \
  130.    || ((i) >= S390_R0_UPPER_REGNUM && (i) <= S390_R15_UPPER_REGNUM)        \
  131.    || (i) == S390_ORIG_R2_REGNUM)

  132. #define S390_IS_FPREGSET_REGNUM(i)                        \
  133.   ((i) >= S390_FPC_REGNUM && (i) <= S390_F15_REGNUM)

  134. #define S390_IS_TDBREGSET_REGNUM(i)                                \
  135.   ((i) >= S390_TDB_DWORD0_REGNUM && (i) <= S390_TDB_R15_REGNUM)

  136. /* Core file register sets, defined in s390-tdep.c.  */
  137. #define s390_sizeof_gregset 0x90
  138. #define s390x_sizeof_gregset 0xd8
  139. extern const struct regset s390_gregset;
  140. #define s390_sizeof_fpregset 0x88
  141. extern const struct regset s390_fpregset;
  142. extern const struct regset s390_last_break_regset;
  143. extern const struct regset s390x_last_break_regset;
  144. extern const struct regset s390_system_call_regset;
  145. extern const struct regset s390_tdb_regset;
  146. #define s390_sizeof_tdbregset 0x100

  147. /* GNU/Linux target descriptions.  */
  148. extern struct target_desc *tdesc_s390_linux32;
  149. extern struct target_desc *tdesc_s390_linux32v1;
  150. extern struct target_desc *tdesc_s390_linux32v2;
  151. extern struct target_desc *tdesc_s390_linux64;
  152. extern struct target_desc *tdesc_s390_linux64v1;
  153. extern struct target_desc *tdesc_s390_linux64v2;
  154. extern struct target_desc *tdesc_s390_te_linux64;
  155. extern struct target_desc *tdesc_s390x_linux64;
  156. extern struct target_desc *tdesc_s390x_linux64v1;
  157. extern struct target_desc *tdesc_s390x_linux64v2;
  158. extern struct target_desc *tdesc_s390x_te_linux64;

  159. #endif