sysdep.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. /* Copyright (C) 1999, 2001, 2002, 2006 Free Software Foundation, Inc.
  2. This file is part of the GNU C Library.
  3. The GNU C Library is free software; you can redistribute it and/or
  4. modify it under the terms of the GNU Lesser General Public
  5. License as published by the Free Software Foundation; either
  6. version 2.1 of the License, or (at your option) any later version.
  7. The GNU C Library is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  10. Lesser General Public License for more details.
  11. You should have received a copy of the GNU Lesser General Public
  12. License along with the GNU C Library; if not, see
  13. <http://www.gnu.org/licenses/>. */
  14. #include <common/sysdep.h>
  15. /*
  16. * Powerpc Feature masks for the Aux Vector Hardware Capabilities (AT_HWCAP).
  17. * This entry is copied to _dl_hwcap or rtld_global._dl_hwcap during startup.
  18. * The following must match the kernels linux/asm/cputable.h.
  19. */
  20. #define PPC_FEATURE_32 0x80000000 /* 32-bit mode. */
  21. #define PPC_FEATURE_64 0x40000000 /* 64-bit mode. */
  22. #define PPC_FEATURE_601_INSTR 0x20000000 /* 601 chip, Old POWER ISA. */
  23. #define PPC_FEATURE_HAS_ALTIVEC 0x10000000 /* SIMD/Vector Unit. */
  24. #define PPC_FEATURE_HAS_FPU 0x08000000 /* Floating Point Unit. */
  25. #define PPC_FEATURE_HAS_MMU 0x04000000 /* Memory Management Unit. */
  26. #define PPC_FEATURE_HAS_4xxMAC 0x02000000 /* 4xx Multiply Accumulator. */
  27. #define PPC_FEATURE_UNIFIED_CACHE 0x01000000 /* Unified I/D cache. */
  28. #define PPC_FEATURE_HAS_SPE 0x00800000 /* Signal Processing ext. */
  29. #define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000 /* SPE Float. */
  30. #define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 /* SPE Double. */
  31. #define PPC_FEATURE_NO_TB 0x00100000 /* 601/403gx have no timebase */
  32. #define PPC_FEATURE_POWER4 0x00080000 /* POWER4 ISA 2.00 */
  33. #define PPC_FEATURE_POWER5 0x00040000 /* POWER5 ISA 2.02 */
  34. #define PPC_FEATURE_POWER5_PLUS 0x00020000 /* POWER5+ ISA 2.03 */
  35. #define PPC_FEATURE_CELL_BE 0x00010000 /* CELL Broadband Engine */
  36. #define PPC_FEATURE_BOOKE 0x00008000
  37. #define PPC_FEATURE_SMT 0x00004000 /* Simultaneous Multi-Threading */
  38. #define PPC_FEATURE_ICACHE_SNOOP 0x00002000
  39. #define PPC_FEATURE_ARCH_2_05 0x00001000 /* ISA 2.05 */
  40. #define PPC_FEATURE_PA6T 0x00000800 /* PA Semi 6T Core */
  41. #define PPC_FEATURE_HAS_DFP 0x00000400 /* Decimal FP Unit */
  42. #define PPC_FEATURE_POWER6_EXT 0x00000200 /* P6 + mffgpr/mftgpr */
  43. #define PPC_FEATURE_ARCH_2_06 0x00000100 /* ISA 2.06 */
  44. #define PPC_FEATURE_HAS_VSX 0x00000080 /* P7 Vector Extension. */
  45. #define PPC_FEATURE_970 (PPC_FEATURE_POWER4 + PPC_FEATURE_HAS_ALTIVEC)
  46. #ifdef __ASSEMBLER__
  47. /* Symbolic names for the registers. The only portable way to write asm
  48. code is to use number but this produces really unreadable code.
  49. Therefore these symbolic names. */
  50. /* Integer registers. */
  51. #define r0 0
  52. #define r1 1
  53. #define r2 2
  54. #define r3 3
  55. #define r4 4
  56. #define r5 5
  57. #define r6 6
  58. #define r7 7
  59. #define r8 8
  60. #define r9 9
  61. #define r10 10
  62. #define r11 11
  63. #define r12 12
  64. #define r13 13
  65. #define r14 14
  66. #define r15 15
  67. #define r16 16
  68. #define r17 17
  69. #define r18 18
  70. #define r19 19
  71. #define r20 20
  72. #define r21 21
  73. #define r22 22
  74. #define r23 23
  75. #define r24 24
  76. #define r25 25
  77. #define r26 26
  78. #define r27 27
  79. #define r28 28
  80. #define r29 29
  81. #define r30 30
  82. #define r31 31
  83. /* Floating-point registers. */
  84. #define fp0 0
  85. #define fp1 1
  86. #define fp2 2
  87. #define fp3 3
  88. #define fp4 4
  89. #define fp5 5
  90. #define fp6 6
  91. #define fp7 7
  92. #define fp8 8
  93. #define fp9 9
  94. #define fp10 10
  95. #define fp11 11
  96. #define fp12 12
  97. #define fp13 13
  98. #define fp14 14
  99. #define fp15 15
  100. #define fp16 16
  101. #define fp17 17
  102. #define fp18 18
  103. #define fp19 19
  104. #define fp20 20
  105. #define fp21 21
  106. #define fp22 22
  107. #define fp23 23
  108. #define fp24 24
  109. #define fp25 25
  110. #define fp26 26
  111. #define fp27 27
  112. #define fp28 28
  113. #define fp29 29
  114. #define fp30 30
  115. #define fp31 31
  116. /* Condition code registers. */
  117. #define cr0 0
  118. #define cr1 1
  119. #define cr2 2
  120. #define cr3 3
  121. #define cr4 4
  122. #define cr5 5
  123. #define cr6 6
  124. #define cr7 7
  125. /* Vector registers. */
  126. #define v0 0
  127. #define v1 1
  128. #define v2 2
  129. #define v3 3
  130. #define v4 4
  131. #define v5 5
  132. #define v6 6
  133. #define v7 7
  134. #define v8 8
  135. #define v9 9
  136. #define v10 10
  137. #define v11 11
  138. #define v12 12
  139. #define v13 13
  140. #define v14 14
  141. #define v15 15
  142. #define v16 16
  143. #define v17 17
  144. #define v18 18
  145. #define v19 19
  146. #define v20 20
  147. #define v21 21
  148. #define v22 22
  149. #define v23 23
  150. #define v24 24
  151. #define v25 25
  152. #define v26 26
  153. #define v27 27
  154. #define v28 28
  155. #define v29 29
  156. #define v30 30
  157. #define v31 31
  158. #define VRSAVE 256
  159. #ifdef __ELF__
  160. /* This seems to always be the case on PPC. */
  161. #define ALIGNARG(log2) log2
  162. /* For ELF we need the `.type' directive to make shared libs work right. */
  163. #define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
  164. #define ASM_SIZE_DIRECTIVE(name) .size name,.-name
  165. /* In ELF C symbols are asm symbols. */
  166. #undef NO_UNDERSCORES
  167. #define NO_UNDERSCORES
  168. #endif /* __ELF__ */
  169. # include <sys/syscall.h>
  170. # if defined(__powerpc64__)
  171. # include "powerpc64/sysdep.h"
  172. # else
  173. # include "powerpc32/sysdep.h"
  174. # endif
  175. #endif /* __ASSEMBLER__ */