0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef _UAPI_ASM_POWERPC_ELF_H
0011 #define _UAPI_ASM_POWERPC_ELF_H
0012
0013
0014 #include <linux/types.h>
0015
0016 #include <asm/ptrace.h>
0017 #include <asm/cputable.h>
0018 #include <asm/auxvec.h>
0019
0020
0021 #define R_PPC_NONE 0
0022 #define R_PPC_ADDR32 1
0023 #define R_PPC_ADDR24 2
0024 #define R_PPC_ADDR16 3
0025 #define R_PPC_ADDR16_LO 4
0026 #define R_PPC_ADDR16_HI 5
0027 #define R_PPC_ADDR16_HA 6
0028 #define R_PPC_ADDR14 7
0029 #define R_PPC_ADDR14_BRTAKEN 8
0030 #define R_PPC_ADDR14_BRNTAKEN 9
0031 #define R_PPC_REL24 10
0032 #define R_PPC_REL14 11
0033 #define R_PPC_REL14_BRTAKEN 12
0034 #define R_PPC_REL14_BRNTAKEN 13
0035 #define R_PPC_GOT16 14
0036 #define R_PPC_GOT16_LO 15
0037 #define R_PPC_GOT16_HI 16
0038 #define R_PPC_GOT16_HA 17
0039 #define R_PPC_PLTREL24 18
0040 #define R_PPC_COPY 19
0041 #define R_PPC_GLOB_DAT 20
0042 #define R_PPC_JMP_SLOT 21
0043 #define R_PPC_RELATIVE 22
0044 #define R_PPC_LOCAL24PC 23
0045 #define R_PPC_UADDR32 24
0046 #define R_PPC_UADDR16 25
0047 #define R_PPC_REL32 26
0048 #define R_PPC_PLT32 27
0049 #define R_PPC_PLTREL32 28
0050 #define R_PPC_PLT16_LO 29
0051 #define R_PPC_PLT16_HI 30
0052 #define R_PPC_PLT16_HA 31
0053 #define R_PPC_SDAREL16 32
0054 #define R_PPC_SECTOFF 33
0055 #define R_PPC_SECTOFF_LO 34
0056 #define R_PPC_SECTOFF_HI 35
0057 #define R_PPC_SECTOFF_HA 36
0058
0059
0060 #define R_PPC_TLS 67
0061 #define R_PPC_DTPMOD32 68
0062 #define R_PPC_TPREL16 69
0063 #define R_PPC_TPREL16_LO 70
0064 #define R_PPC_TPREL16_HI 71
0065 #define R_PPC_TPREL16_HA 72
0066 #define R_PPC_TPREL32 73
0067 #define R_PPC_DTPREL16 74
0068 #define R_PPC_DTPREL16_LO 75
0069 #define R_PPC_DTPREL16_HI 76
0070 #define R_PPC_DTPREL16_HA 77
0071 #define R_PPC_DTPREL32 78
0072 #define R_PPC_GOT_TLSGD16 79
0073 #define R_PPC_GOT_TLSGD16_LO 80
0074 #define R_PPC_GOT_TLSGD16_HI 81
0075 #define R_PPC_GOT_TLSGD16_HA 82
0076 #define R_PPC_GOT_TLSLD16 83
0077 #define R_PPC_GOT_TLSLD16_LO 84
0078 #define R_PPC_GOT_TLSLD16_HI 85
0079 #define R_PPC_GOT_TLSLD16_HA 86
0080 #define R_PPC_GOT_TPREL16 87
0081 #define R_PPC_GOT_TPREL16_LO 88
0082 #define R_PPC_GOT_TPREL16_HI 89
0083 #define R_PPC_GOT_TPREL16_HA 90
0084 #define R_PPC_GOT_DTPREL16 91
0085 #define R_PPC_GOT_DTPREL16_LO 92
0086 #define R_PPC_GOT_DTPREL16_HI 93
0087 #define R_PPC_GOT_DTPREL16_HA 94
0088
0089
0090 #define R_PPC_NUM 95
0091
0092
0093 #define ELF_NGREG 48
0094 #define ELF_NFPREG 33
0095 #define ELF_NVMX 34
0096 #define ELF_NVSX 32
0097 #define ELF_NTMSPRREG 3
0098 #define ELF_NEBB 3
0099 #define ELF_NPMU 5
0100 #define ELF_NPKEY 3
0101
0102 typedef unsigned long elf_greg_t64;
0103 typedef elf_greg_t64 elf_gregset_t64[ELF_NGREG];
0104
0105 typedef unsigned int elf_greg_t32;
0106 typedef elf_greg_t32 elf_gregset_t32[ELF_NGREG];
0107 typedef elf_gregset_t32 compat_elf_gregset_t;
0108
0109
0110
0111
0112 #ifdef __powerpc64__
0113 # define ELF_NVRREG32 33
0114 # define ELF_NVRREG 34
0115 # define ELF_NVSRHALFREG 32
0116 # define ELF_GREG_TYPE elf_greg_t64
0117 # define ELF_ARCH EM_PPC64
0118 # define ELF_CLASS ELFCLASS64
0119 typedef elf_greg_t64 elf_greg_t;
0120 typedef elf_gregset_t64 elf_gregset_t;
0121 #else
0122 # define ELF_NEVRREG 34
0123 # define ELF_NVRREG 33
0124 # define ELF_GREG_TYPE elf_greg_t32
0125 # define ELF_ARCH EM_PPC
0126 # define ELF_CLASS ELFCLASS32
0127 typedef elf_greg_t32 elf_greg_t;
0128 typedef elf_gregset_t32 elf_gregset_t;
0129 #endif
0130
0131 #ifdef __BIG_ENDIAN__
0132 #define ELF_DATA ELFDATA2MSB
0133 #else
0134 #define ELF_DATA ELFDATA2LSB
0135 #endif
0136
0137
0138 typedef double elf_fpreg_t;
0139 typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160 typedef __vector128 elf_vrreg_t;
0161 typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG];
0162 #ifdef __powerpc64__
0163 typedef elf_vrreg_t elf_vrregset_t32[ELF_NVRREG32];
0164 typedef elf_fpreg_t elf_vsrreghalf_t32[ELF_NVSRHALFREG];
0165 #endif
0166
0167
0168 #define R_PPC64_NONE R_PPC_NONE
0169 #define R_PPC64_ADDR32 R_PPC_ADDR32
0170 #define R_PPC64_ADDR24 R_PPC_ADDR24
0171 #define R_PPC64_ADDR16 R_PPC_ADDR16
0172 #define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO
0173 #define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI
0174 #define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA
0175 #define R_PPC64_ADDR14 R_PPC_ADDR14
0176 #define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN
0177 #define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
0178 #define R_PPC64_REL24 R_PPC_REL24
0179 #define R_PPC64_REL14 R_PPC_REL14
0180 #define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN
0181 #define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN
0182 #define R_PPC64_GOT16 R_PPC_GOT16
0183 #define R_PPC64_GOT16_LO R_PPC_GOT16_LO
0184 #define R_PPC64_GOT16_HI R_PPC_GOT16_HI
0185 #define R_PPC64_GOT16_HA R_PPC_GOT16_HA
0186
0187 #define R_PPC64_COPY R_PPC_COPY
0188 #define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT
0189 #define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT
0190 #define R_PPC64_RELATIVE R_PPC_RELATIVE
0191
0192 #define R_PPC64_UADDR32 R_PPC_UADDR32
0193 #define R_PPC64_UADDR16 R_PPC_UADDR16
0194 #define R_PPC64_REL32 R_PPC_REL32
0195 #define R_PPC64_PLT32 R_PPC_PLT32
0196 #define R_PPC64_PLTREL32 R_PPC_PLTREL32
0197 #define R_PPC64_PLT16_LO R_PPC_PLT16_LO
0198 #define R_PPC64_PLT16_HI R_PPC_PLT16_HI
0199 #define R_PPC64_PLT16_HA R_PPC_PLT16_HA
0200
0201 #define R_PPC64_SECTOFF R_PPC_SECTOFF
0202 #define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO
0203 #define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI
0204 #define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA
0205 #define R_PPC64_ADDR30 37
0206 #define R_PPC64_ADDR64 38
0207 #define R_PPC64_ADDR16_HIGHER 39
0208 #define R_PPC64_ADDR16_HIGHERA 40
0209 #define R_PPC64_ADDR16_HIGHEST 41
0210 #define R_PPC64_ADDR16_HIGHESTA 42
0211 #define R_PPC64_UADDR64 43
0212 #define R_PPC64_REL64 44
0213 #define R_PPC64_PLT64 45
0214 #define R_PPC64_PLTREL64 46
0215 #define R_PPC64_TOC16 47
0216 #define R_PPC64_TOC16_LO 48
0217 #define R_PPC64_TOC16_HI 49
0218 #define R_PPC64_TOC16_HA 50
0219 #define R_PPC64_TOC 51
0220 #define R_PPC64_PLTGOT16 52
0221 #define R_PPC64_PLTGOT16_LO 53
0222 #define R_PPC64_PLTGOT16_HI 54
0223 #define R_PPC64_PLTGOT16_HA 55
0224
0225 #define R_PPC64_ADDR16_DS 56
0226 #define R_PPC64_ADDR16_LO_DS 57
0227 #define R_PPC64_GOT16_DS 58
0228 #define R_PPC64_GOT16_LO_DS 59
0229 #define R_PPC64_PLT16_LO_DS 60
0230 #define R_PPC64_SECTOFF_DS 61
0231 #define R_PPC64_SECTOFF_LO_DS 62
0232 #define R_PPC64_TOC16_DS 63
0233 #define R_PPC64_TOC16_LO_DS 64
0234 #define R_PPC64_PLTGOT16_DS 65
0235 #define R_PPC64_PLTGOT16_LO_DS 66
0236
0237
0238 #define R_PPC64_TLS 67
0239 #define R_PPC64_DTPMOD64 68
0240 #define R_PPC64_TPREL16 69
0241 #define R_PPC64_TPREL16_LO 70
0242 #define R_PPC64_TPREL16_HI 71
0243 #define R_PPC64_TPREL16_HA 72
0244 #define R_PPC64_TPREL64 73
0245 #define R_PPC64_DTPREL16 74
0246 #define R_PPC64_DTPREL16_LO 75
0247 #define R_PPC64_DTPREL16_HI 76
0248 #define R_PPC64_DTPREL16_HA 77
0249 #define R_PPC64_DTPREL64 78
0250 #define R_PPC64_GOT_TLSGD16 79
0251 #define R_PPC64_GOT_TLSGD16_LO 80
0252 #define R_PPC64_GOT_TLSGD16_HI 81
0253 #define R_PPC64_GOT_TLSGD16_HA 82
0254 #define R_PPC64_GOT_TLSLD16 83
0255 #define R_PPC64_GOT_TLSLD16_LO 84
0256 #define R_PPC64_GOT_TLSLD16_HI 85
0257 #define R_PPC64_GOT_TLSLD16_HA 86
0258 #define R_PPC64_GOT_TPREL16_DS 87
0259 #define R_PPC64_GOT_TPREL16_LO_DS 88
0260 #define R_PPC64_GOT_TPREL16_HI 89
0261 #define R_PPC64_GOT_TPREL16_HA 90
0262 #define R_PPC64_GOT_DTPREL16_DS 91
0263 #define R_PPC64_GOT_DTPREL16_LO_DS 92
0264 #define R_PPC64_GOT_DTPREL16_HI 93
0265 #define R_PPC64_GOT_DTPREL16_HA 94
0266 #define R_PPC64_TPREL16_DS 95
0267 #define R_PPC64_TPREL16_LO_DS 96
0268 #define R_PPC64_TPREL16_HIGHER 97
0269 #define R_PPC64_TPREL16_HIGHERA 98
0270 #define R_PPC64_TPREL16_HIGHEST 99
0271 #define R_PPC64_TPREL16_HIGHESTA 100
0272 #define R_PPC64_DTPREL16_DS 101
0273 #define R_PPC64_DTPREL16_LO_DS 102
0274 #define R_PPC64_DTPREL16_HIGHER 103
0275 #define R_PPC64_DTPREL16_HIGHERA 104
0276 #define R_PPC64_DTPREL16_HIGHEST 105
0277 #define R_PPC64_DTPREL16_HIGHESTA 106
0278 #define R_PPC64_TLSGD 107
0279 #define R_PPC64_TLSLD 108
0280 #define R_PPC64_TOCSAVE 109
0281
0282 #define R_PPC64_ENTRY 118
0283
0284 #define R_PPC64_REL16 249
0285 #define R_PPC64_REL16_LO 250
0286 #define R_PPC64_REL16_HI 251
0287 #define R_PPC64_REL16_HA 252
0288
0289
0290 #define R_PPC64_NUM 253
0291
0292 #endif