blob: 9b76eda861dcc9ab2e4312125d07eb6df36795f4 [file] [log] [blame]
Jia Liu74aa025d2012-02-24 02:15:57 +00001//===-- MipsFixupKinds.h - Mips Specific Fixup Entries ----------*- C++ -*-===//
Akira Hatanaka769fc972011-10-14 02:38:56 +00002//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
Jia Liu74aa025d2012-02-24 02:15:57 +000010#ifndef LLVM_MIPS_MIPSFIXUPKINDS_H
11#define LLVM_MIPS_MIPSFIXUPKINDS_H
Akira Hatanaka769fc972011-10-14 02:38:56 +000012
13#include "llvm/MC/MCFixup.h"
14
15namespace llvm {
16namespace Mips {
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000017 // Although most of the current fixup types reflect a unique relocation
18 // one can have multiple fixup types for a given relocation and thus need
19 // to be uniquely named.
20 //
21 // This table *must* be in the save order of
22 // MCFixupKindInfo Infos[Mips::NumTargetFixupKinds]
23 // in MipsAsmBackend.cpp.
24 //
25 enum Fixups {
26 // Branch fixups resulting in R_MIPS_16.
27 fixup_Mips_16 = FirstTargetFixupKind,
Akira Hatanaka769fc972011-10-14 02:38:56 +000028
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000029 // Pure 32 bit data fixup resulting in - R_MIPS_32.
30 fixup_Mips_32,
Akira Hatanaka769fc972011-10-14 02:38:56 +000031
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000032 // Full 32 bit data relative data fixup resulting in - R_MIPS_REL32.
33 fixup_Mips_REL32,
Akira Hatanaka769fc972011-10-14 02:38:56 +000034
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000035 // Jump 26 bit fixup resulting in - R_MIPS_26.
36 fixup_Mips_26,
Akira Hatanaka769fc972011-10-14 02:38:56 +000037
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000038 // Pure upper 16 bit fixup resulting in - R_MIPS_HI16.
39 fixup_Mips_HI16,
Akira Hatanaka769fc972011-10-14 02:38:56 +000040
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000041 // Pure lower 16 bit fixup resulting in - R_MIPS_LO16.
42 fixup_Mips_LO16,
Akira Hatanaka769fc972011-10-14 02:38:56 +000043
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000044 // 16 bit fixup for GP offest resulting in - R_MIPS_GPREL16.
45 fixup_Mips_GPREL16,
Akira Hatanaka769fc972011-10-14 02:38:56 +000046
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000047 // 16 bit literal fixup resulting in - R_MIPS_LITERAL.
48 fixup_Mips_LITERAL,
Akira Hatanaka769fc972011-10-14 02:38:56 +000049
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000050 // Global symbol fixup resulting in - R_MIPS_GOT16.
51 fixup_Mips_GOT_Global,
Akira Hatanaka769fc972011-10-14 02:38:56 +000052
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000053 // Local symbol fixup resulting in - R_MIPS_GOT16.
54 fixup_Mips_GOT_Local,
Bruno Cardoso Lopes61e6d982011-12-07 00:28:57 +000055
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000056 // PC relative branch fixup resulting in - R_MIPS_PC16.
57 fixup_Mips_PC16,
Akira Hatanaka769fc972011-10-14 02:38:56 +000058
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000059 // resulting in - R_MIPS_CALL16.
60 fixup_Mips_CALL16,
Akira Hatanaka769fc972011-10-14 02:38:56 +000061
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000062 // resulting in - R_MIPS_GPREL32.
63 fixup_Mips_GPREL32,
Akira Hatanaka769fc972011-10-14 02:38:56 +000064
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000065 // resulting in - R_MIPS_SHIFT5.
66 fixup_Mips_SHIFT5,
Akira Hatanaka769fc972011-10-14 02:38:56 +000067
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000068 // resulting in - R_MIPS_SHIFT6.
69 fixup_Mips_SHIFT6,
Akira Hatanaka769fc972011-10-14 02:38:56 +000070
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000071 // Pure 64 bit data fixup resulting in - R_MIPS_64.
72 fixup_Mips_64,
Akira Hatanaka769fc972011-10-14 02:38:56 +000073
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000074 // resulting in - R_MIPS_TLS_GD.
75 fixup_Mips_TLSGD,
Akira Hatanaka769fc972011-10-14 02:38:56 +000076
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000077 // resulting in - R_MIPS_TLS_GOTTPREL.
78 fixup_Mips_GOTTPREL,
Akira Hatanaka769fc972011-10-14 02:38:56 +000079
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000080 // resulting in - R_MIPS_TLS_TPREL_HI16.
81 fixup_Mips_TPREL_HI,
Akira Hatanaka769fc972011-10-14 02:38:56 +000082
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000083 // resulting in - R_MIPS_TLS_TPREL_LO16.
84 fixup_Mips_TPREL_LO,
Akira Hatanaka769fc972011-10-14 02:38:56 +000085
Akira Hatanakae2eed962011-12-22 01:05:17 +000086 // resulting in - R_MIPS_TLS_LDM.
87 fixup_Mips_TLSLDM,
88
89 // resulting in - R_MIPS_TLS_DTPREL_HI16.
90 fixup_Mips_DTPREL_HI,
91
92 // resulting in - R_MIPS_TLS_DTPREL_LO16.
93 fixup_Mips_DTPREL_LO,
94
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000095 // PC relative branch fixup resulting in - R_MIPS_PC16
96 fixup_Mips_Branch_PCRel,
Akira Hatanaka769fc972011-10-14 02:38:56 +000097
Bruno Cardoso Lopes56b70de2011-12-07 22:35:30 +000098 // Marker
99 LastTargetFixupKind,
100 NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind
101 };
Akira Hatanaka769fc972011-10-14 02:38:56 +0000102} // namespace Mips
Bill Wendling2b7a1ff2011-10-18 07:40:22 +0000103} // namespace llvm
Akira Hatanaka769fc972011-10-14 02:38:56 +0000104
105
Jia Liu683f8ff2012-02-24 02:17:26 +0000106#endif // LLVM_MIPS_MIPSFIXUPKINDS_H