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 
14 namespace llvm {
15 namespace 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