1//===-- MipsFixupKinds.h - Mips Specific Fixup Entries ----------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSFIXUPKINDS_H
10#define LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSFIXUPKINDS_H
11
12#include "llvm/MC/MCFixup.h"
13
14namespace llvm {
15namespace Mips {
16  // Although most of the current fixup types reflect a unique relocation
17  // one can have multiple fixup types for a given relocation and thus need
18  // to be uniquely named.
19  //
20  // This table *must* be in the same order of
21  // MCFixupKindInfo Infos[Mips::NumTargetFixupKinds]
22  // in MipsAsmBackend.cpp.
23  //
24  enum Fixups {
25    // Branch fixups resulting in R_MIPS_16.
26    fixup_Mips_16 = FirstTargetFixupKind,
27
28    // Pure 32 bit data fixup resulting in - R_MIPS_32.
29    fixup_Mips_32,
30
31    // Full 32 bit data relative data fixup resulting in - R_MIPS_REL32.
32    fixup_Mips_REL32,
33
34    // Jump 26 bit fixup resulting in - R_MIPS_26.
35    fixup_Mips_26,
36
37    // Pure upper 16 bit fixup resulting in - R_MIPS_HI16.
38    fixup_Mips_HI16,
39
40    // Pure lower 16 bit fixup resulting in - R_MIPS_LO16.
41    fixup_Mips_LO16,
42
43    // 16 bit fixup for GP offest resulting in - R_MIPS_GPREL16.
44    fixup_Mips_GPREL16,
45
46    // 16 bit literal fixup resulting in - R_MIPS_LITERAL.
47    fixup_Mips_LITERAL,
48
49    // Symbol fixup resulting in - R_MIPS_GOT16.
50    fixup_Mips_GOT,
51
52    // PC relative branch fixup resulting in - R_MIPS_PC16.
53    fixup_Mips_PC16,
54
55    // resulting in - R_MIPS_CALL16.
56    fixup_Mips_CALL16,
57
58    // resulting in - R_MIPS_GPREL32.
59    fixup_Mips_GPREL32,
60
61    // resulting in - R_MIPS_SHIFT5.
62    fixup_Mips_SHIFT5,
63
64    // resulting in - R_MIPS_SHIFT6.
65    fixup_Mips_SHIFT6,
66
67    // Pure 64 bit data fixup resulting in - R_MIPS_64.
68    fixup_Mips_64,
69
70    // resulting in - R_MIPS_TLS_GD.
71    fixup_Mips_TLSGD,
72
73    // resulting in - R_MIPS_TLS_GOTTPREL.
74    fixup_Mips_GOTTPREL,
75
76    // resulting in - R_MIPS_TLS_TPREL_HI16.
77    fixup_Mips_TPREL_HI,
78
79    // resulting in - R_MIPS_TLS_TPREL_LO16.
80    fixup_Mips_TPREL_LO,
81
82    // resulting in - R_MIPS_TLS_LDM.
83    fixup_Mips_TLSLDM,
84
85    // resulting in - R_MIPS_TLS_DTPREL_HI16.
86    fixup_Mips_DTPREL_HI,
87
88    // resulting in - R_MIPS_TLS_DTPREL_LO16.
89    fixup_Mips_DTPREL_LO,
90
91    // PC relative branch fixup resulting in - R_MIPS_PC16
92    fixup_Mips_Branch_PCRel,
93
94    // resulting in - R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16
95    //                R_MICROMIPS_GPREL16/R_MICROMIPS_SUB/R_MICROMIPS_HI16
96    fixup_Mips_GPOFF_HI,
97    fixup_MICROMIPS_GPOFF_HI,
98
99    // resulting in - R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16
100    //                R_MICROMIPS_GPREL16/R_MICROMIPS_SUB/R_MICROMIPS_LO16
101    fixup_Mips_GPOFF_LO,
102    fixup_MICROMIPS_GPOFF_LO,
103
104    // resulting in - R_MIPS_PAGE
105    fixup_Mips_GOT_PAGE,
106
107    // resulting in - R_MIPS_GOT_OFST
108    fixup_Mips_GOT_OFST,
109
110    // resulting in - R_MIPS_GOT_DISP
111    fixup_Mips_GOT_DISP,
112
113    // resulting in - R_MIPS_HIGHER/R_MICROMIPS_HIGHER
114    fixup_Mips_HIGHER,
115    fixup_MICROMIPS_HIGHER,
116
117    // resulting in - R_MIPS_HIGHEST/R_MICROMIPS_HIGHEST
118    fixup_Mips_HIGHEST,
119    fixup_MICROMIPS_HIGHEST,
120
121    // resulting in - R_MIPS_GOT_HI16
122    fixup_Mips_GOT_HI16,
123
124    // resulting in - R_MIPS_GOT_LO16
125    fixup_Mips_GOT_LO16,
126
127    // resulting in - R_MIPS_CALL_HI16
128    fixup_Mips_CALL_HI16,
129
130    // resulting in - R_MIPS_CALL_LO16
131    fixup_Mips_CALL_LO16,
132
133    // resulting in - R_MIPS_PC18_S3
134    fixup_MIPS_PC18_S3,
135
136    // resulting in - R_MIPS_PC19_S2
137    fixup_MIPS_PC19_S2,
138
139    // resulting in - R_MIPS_PC21_S2
140    fixup_MIPS_PC21_S2,
141
142    // resulting in - R_MIPS_PC26_S2
143    fixup_MIPS_PC26_S2,
144
145    // resulting in - R_MIPS_PCHI16
146    fixup_MIPS_PCHI16,
147
148    // resulting in - R_MIPS_PCLO16
149    fixup_MIPS_PCLO16,
150
151    // resulting in - R_MICROMIPS_26_S1
152    fixup_MICROMIPS_26_S1,
153
154    // resulting in - R_MICROMIPS_HI16
155    fixup_MICROMIPS_HI16,
156
157    // resulting in - R_MICROMIPS_LO16
158    fixup_MICROMIPS_LO16,
159
160    // resulting in - R_MICROMIPS_GOT16
161    fixup_MICROMIPS_GOT16,
162
163    // resulting in - R_MICROMIPS_PC7_S1
164    fixup_MICROMIPS_PC7_S1,
165
166    // resulting in - R_MICROMIPS_PC10_S1
167    fixup_MICROMIPS_PC10_S1,
168
169    // resulting in - R_MICROMIPS_PC16_S1
170    fixup_MICROMIPS_PC16_S1,
171
172    // resulting in - R_MICROMIPS_PC26_S1
173    fixup_MICROMIPS_PC26_S1,
174
175    // resulting in - R_MICROMIPS_PC19_S2
176    fixup_MICROMIPS_PC19_S2,
177
178    // resulting in - R_MICROMIPS_PC18_S3
179    fixup_MICROMIPS_PC18_S3,
180
181    // resulting in - R_MICROMIPS_PC21_S1
182    fixup_MICROMIPS_PC21_S1,
183
184    // resulting in - R_MICROMIPS_CALL16
185    fixup_MICROMIPS_CALL16,
186
187    // resulting in - R_MICROMIPS_GOT_DISP
188    fixup_MICROMIPS_GOT_DISP,
189
190    // resulting in - R_MICROMIPS_GOT_PAGE
191    fixup_MICROMIPS_GOT_PAGE,
192
193    // resulting in - R_MICROMIPS_GOT_OFST
194    fixup_MICROMIPS_GOT_OFST,
195
196    // resulting in - R_MICROMIPS_TLS_GD
197    fixup_MICROMIPS_TLS_GD,
198
199    // resulting in - R_MICROMIPS_TLS_LDM
200    fixup_MICROMIPS_TLS_LDM,
201
202    // resulting in - R_MICROMIPS_TLS_DTPREL_HI16
203    fixup_MICROMIPS_TLS_DTPREL_HI16,
204
205    // resulting in - R_MICROMIPS_TLS_DTPREL_LO16
206    fixup_MICROMIPS_TLS_DTPREL_LO16,
207
208    // resulting in - R_MICROMIPS_TLS_GOTTPREL.
209    fixup_MICROMIPS_GOTTPREL,
210
211    // resulting in - R_MICROMIPS_TLS_TPREL_HI16
212    fixup_MICROMIPS_TLS_TPREL_HI16,
213
214    // resulting in - R_MICROMIPS_TLS_TPREL_LO16
215    fixup_MICROMIPS_TLS_TPREL_LO16,
216
217    // resulting in - R_MIPS_SUB/R_MICROMIPS_SUB
218    fixup_Mips_SUB,
219    fixup_MICROMIPS_SUB,
220
221    // resulting in - R_MIPS_JALR/R_MICROMIPS_JALR
222    fixup_Mips_JALR,
223    fixup_MICROMIPS_JALR,
224
225    // Marker
226    LastTargetFixupKind,
227    NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind
228  };
229} // namespace Mips
230} // namespace llvm
231
232
233#endif
234