1234353Sdim//===-- MipsFixupKinds.h - Mips Specific Fixup Entries ----------*- C++ -*-===//
2226584Sdim//
3226584Sdim//                     The LLVM Compiler Infrastructure
4226584Sdim//
5226584Sdim// This file is distributed under the University of Illinois Open Source
6226584Sdim// License. See LICENSE.TXT for details.
7226584Sdim//
8226584Sdim//===----------------------------------------------------------------------===//
9226584Sdim
10234353Sdim#ifndef LLVM_MIPS_MIPSFIXUPKINDS_H
11234353Sdim#define LLVM_MIPS_MIPSFIXUPKINDS_H
12226584Sdim
13226584Sdim#include "llvm/MC/MCFixup.h"
14226584Sdim
15226584Sdimnamespace llvm {
16226584Sdimnamespace Mips {
17234353Sdim  // Although most of the current fixup types reflect a unique relocation
18234353Sdim  // one can have multiple fixup types for a given relocation and thus need
19234353Sdim  // to be uniquely named.
20234353Sdim  //
21234353Sdim  // This table *must* be in the save order of
22234353Sdim  // MCFixupKindInfo Infos[Mips::NumTargetFixupKinds]
23234353Sdim  // in MipsAsmBackend.cpp.
24234353Sdim  //
25234353Sdim  enum Fixups {
26234353Sdim    // Branch fixups resulting in R_MIPS_16.
27234353Sdim    fixup_Mips_16 = FirstTargetFixupKind,
28226584Sdim
29234353Sdim    // Pure 32 bit data fixup resulting in - R_MIPS_32.
30234353Sdim    fixup_Mips_32,
31226584Sdim
32234353Sdim    // Full 32 bit data relative data fixup resulting in - R_MIPS_REL32.
33234353Sdim    fixup_Mips_REL32,
34226584Sdim
35234353Sdim    // Jump 26 bit fixup resulting in - R_MIPS_26.
36234353Sdim    fixup_Mips_26,
37226584Sdim
38234353Sdim    // Pure upper 16 bit fixup resulting in - R_MIPS_HI16.
39234353Sdim    fixup_Mips_HI16,
40226584Sdim
41234353Sdim    // Pure lower 16 bit fixup resulting in - R_MIPS_LO16.
42234353Sdim    fixup_Mips_LO16,
43226584Sdim
44234353Sdim    // 16 bit fixup for GP offest resulting in - R_MIPS_GPREL16.
45234353Sdim    fixup_Mips_GPREL16,
46226584Sdim
47234353Sdim    // 16 bit literal fixup resulting in - R_MIPS_LITERAL.
48234353Sdim    fixup_Mips_LITERAL,
49226584Sdim
50234353Sdim    // Global symbol fixup resulting in - R_MIPS_GOT16.
51234353Sdim    fixup_Mips_GOT_Global,
52226584Sdim
53234353Sdim    // Local symbol fixup resulting in - R_MIPS_GOT16.
54234353Sdim    fixup_Mips_GOT_Local,
55226584Sdim
56234353Sdim    // PC relative branch fixup resulting in - R_MIPS_PC16.
57234353Sdim    fixup_Mips_PC16,
58226584Sdim
59234353Sdim    // resulting in - R_MIPS_CALL16.
60234353Sdim    fixup_Mips_CALL16,
61226584Sdim
62234353Sdim    // resulting in - R_MIPS_GPREL32.
63234353Sdim    fixup_Mips_GPREL32,
64226584Sdim
65234353Sdim    // resulting in - R_MIPS_SHIFT5.
66234353Sdim    fixup_Mips_SHIFT5,
67226584Sdim
68234353Sdim    // resulting in - R_MIPS_SHIFT6.
69234353Sdim    fixup_Mips_SHIFT6,
70226584Sdim
71234353Sdim    // Pure 64 bit data fixup resulting in - R_MIPS_64.
72234353Sdim    fixup_Mips_64,
73226584Sdim
74234353Sdim    // resulting in - R_MIPS_TLS_GD.
75234353Sdim    fixup_Mips_TLSGD,
76226584Sdim
77234353Sdim    // resulting in - R_MIPS_TLS_GOTTPREL.
78234353Sdim    fixup_Mips_GOTTPREL,
79226584Sdim
80234353Sdim    // resulting in - R_MIPS_TLS_TPREL_HI16.
81234353Sdim    fixup_Mips_TPREL_HI,
82226584Sdim
83234353Sdim    // resulting in - R_MIPS_TLS_TPREL_LO16.
84234353Sdim    fixup_Mips_TPREL_LO,
85226584Sdim
86234353Sdim    // resulting in - R_MIPS_TLS_LDM.
87234353Sdim    fixup_Mips_TLSLDM,
88226584Sdim
89234353Sdim    // resulting in - R_MIPS_TLS_DTPREL_HI16.
90234353Sdim    fixup_Mips_DTPREL_HI,
91234353Sdim
92234353Sdim    // resulting in - R_MIPS_TLS_DTPREL_LO16.
93234353Sdim    fixup_Mips_DTPREL_LO,
94234353Sdim
95234353Sdim    // PC relative branch fixup resulting in - R_MIPS_PC16
96234353Sdim    fixup_Mips_Branch_PCRel,
97234353Sdim
98239462Sdim    // resulting in - R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16
99239462Sdim    fixup_Mips_GPOFF_HI,
100239462Sdim
101239462Sdim    // resulting in - R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16
102239462Sdim    fixup_Mips_GPOFF_LO,
103239462Sdim
104239462Sdim    // resulting in - R_MIPS_PAGE
105239462Sdim    fixup_Mips_GOT_PAGE,
106239462Sdim
107239462Sdim    // resulting in - R_MIPS_GOT_OFST
108239462Sdim    fixup_Mips_GOT_OFST,
109239462Sdim
110239462Sdim    // resulting in - R_MIPS_GOT_DISP
111239462Sdim    fixup_Mips_GOT_DISP,
112239462Sdim
113239462Sdim    // resulting in - R_MIPS_GOT_HIGHER
114239462Sdim    fixup_Mips_HIGHER,
115239462Sdim
116239462Sdim    // resulting in - R_MIPS_HIGHEST
117239462Sdim    fixup_Mips_HIGHEST,
118239462Sdim
119244628Sdim    // resulting in - R_MIPS_GOT_HI16
120244628Sdim    fixup_Mips_GOT_HI16,
121244628Sdim
122244628Sdim    // resulting in - R_MIPS_GOT_LO16
123244628Sdim    fixup_Mips_GOT_LO16,
124244628Sdim
125244628Sdim    // resulting in - R_MIPS_CALL_HI16
126244628Sdim    fixup_Mips_CALL_HI16,
127244628Sdim
128244628Sdim    // resulting in - R_MIPS_CALL_LO16
129244628Sdim    fixup_Mips_CALL_LO16,
130244628Sdim
131263508Sdim    // resulting in - R_MICROMIPS_26_S1
132263508Sdim    fixup_MICROMIPS_26_S1,
133263508Sdim
134263508Sdim    // resulting in - R_MICROMIPS_HI16
135263508Sdim    fixup_MICROMIPS_HI16,
136263508Sdim
137263508Sdim    // resulting in - R_MICROMIPS_LO16
138263508Sdim    fixup_MICROMIPS_LO16,
139263508Sdim
140263508Sdim    // resulting in - R_MICROMIPS_GOT16
141263508Sdim    fixup_MICROMIPS_GOT16,
142263508Sdim
143263508Sdim    // resulting in - R_MICROMIPS_PC16_S1
144263508Sdim    fixup_MICROMIPS_PC16_S1,
145263508Sdim
146263508Sdim    // resulting in - R_MICROMIPS_CALL16
147263508Sdim    fixup_MICROMIPS_CALL16,
148263508Sdim
149263508Sdim    // resulting in - R_MICROMIPS_GOT_DISP
150263508Sdim    fixup_MICROMIPS_GOT_DISP,
151263508Sdim
152263508Sdim    // resulting in - R_MICROMIPS_GOT_PAGE
153263508Sdim    fixup_MICROMIPS_GOT_PAGE,
154263508Sdim
155263508Sdim    // resulting in - R_MICROMIPS_GOT_OFST
156263508Sdim    fixup_MICROMIPS_GOT_OFST,
157263508Sdim
158263508Sdim    // resulting in - R_MICROMIPS_TLS_DTPREL_HI16
159263508Sdim    fixup_MICROMIPS_TLS_DTPREL_HI16,
160263508Sdim
161263508Sdim    // resulting in - R_MICROMIPS_TLS_DTPREL_LO16
162263508Sdim    fixup_MICROMIPS_TLS_DTPREL_LO16,
163263508Sdim
164263508Sdim    // resulting in - R_MICROMIPS_TLS_TPREL_HI16
165263508Sdim    fixup_MICROMIPS_TLS_TPREL_HI16,
166263508Sdim
167263508Sdim    // resulting in - R_MICROMIPS_TLS_TPREL_LO16
168263508Sdim    fixup_MICROMIPS_TLS_TPREL_LO16,
169263508Sdim
170234353Sdim    // Marker
171234353Sdim    LastTargetFixupKind,
172234353Sdim    NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind
173234353Sdim  };
174234353Sdim} // namespace Mips
175226584Sdim} // namespace llvm
176226584Sdim
177226584Sdim
178234353Sdim#endif // LLVM_MIPS_MIPSFIXUPKINDS_H
179