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