1 //=- AArch64/AArch64FixupKinds.h - AArch64 Specific Fixup Entries -*- C++ -*-=// 2 // 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 // 10 // This file describes the LLVM fixups applied to MCInsts in the AArch64 11 // backend. 12 // 13 //===----------------------------------------------------------------------===// 14 15 #ifndef LLVM_AARCH64_AARCH64FIXUPKINDS_H 16 #define LLVM_AARCH64_AARCH64FIXUPKINDS_H 17 18 #include "llvm/MC/MCFixup.h" 19 20 namespace llvm { 21 namespace AArch64 { 22 enum Fixups { 23 fixup_a64_ld_prel = FirstTargetFixupKind, 24 fixup_a64_adr_prel, 25 fixup_a64_adr_prel_page, 26 27 fixup_a64_add_lo12, 28 29 fixup_a64_ldst8_lo12, 30 fixup_a64_ldst16_lo12, 31 fixup_a64_ldst32_lo12, 32 fixup_a64_ldst64_lo12, 33 fixup_a64_ldst128_lo12, 34 35 fixup_a64_tstbr, 36 fixup_a64_condbr, 37 fixup_a64_uncondbr, 38 fixup_a64_call, 39 40 fixup_a64_movw_uabs_g0, 41 fixup_a64_movw_uabs_g0_nc, 42 fixup_a64_movw_uabs_g1, 43 fixup_a64_movw_uabs_g1_nc, 44 fixup_a64_movw_uabs_g2, 45 fixup_a64_movw_uabs_g2_nc, 46 fixup_a64_movw_uabs_g3, 47 48 fixup_a64_movw_sabs_g0, 49 fixup_a64_movw_sabs_g1, 50 fixup_a64_movw_sabs_g2, 51 52 fixup_a64_adr_prel_got_page, 53 fixup_a64_ld64_got_lo12_nc, 54 55 // Produce offsets relative to the module's dynamic TLS area. 56 fixup_a64_movw_dtprel_g2, 57 fixup_a64_movw_dtprel_g1, 58 fixup_a64_movw_dtprel_g1_nc, 59 fixup_a64_movw_dtprel_g0, 60 fixup_a64_movw_dtprel_g0_nc, 61 fixup_a64_add_dtprel_hi12, 62 fixup_a64_add_dtprel_lo12, 63 fixup_a64_add_dtprel_lo12_nc, 64 fixup_a64_ldst8_dtprel_lo12, 65 fixup_a64_ldst8_dtprel_lo12_nc, 66 fixup_a64_ldst16_dtprel_lo12, 67 fixup_a64_ldst16_dtprel_lo12_nc, 68 fixup_a64_ldst32_dtprel_lo12, 69 fixup_a64_ldst32_dtprel_lo12_nc, 70 fixup_a64_ldst64_dtprel_lo12, 71 fixup_a64_ldst64_dtprel_lo12_nc, 72 73 // Produce the GOT entry containing a variable's address in TLS's 74 // initial-exec mode. 75 fixup_a64_movw_gottprel_g1, 76 fixup_a64_movw_gottprel_g0_nc, 77 fixup_a64_adr_gottprel_page, 78 fixup_a64_ld64_gottprel_lo12_nc, 79 fixup_a64_ld_gottprel_prel19, 80 81 // Produce offsets relative to the thread pointer: TPIDR_EL0. 82 fixup_a64_movw_tprel_g2, 83 fixup_a64_movw_tprel_g1, 84 fixup_a64_movw_tprel_g1_nc, 85 fixup_a64_movw_tprel_g0, 86 fixup_a64_movw_tprel_g0_nc, 87 fixup_a64_add_tprel_hi12, 88 fixup_a64_add_tprel_lo12, 89 fixup_a64_add_tprel_lo12_nc, 90 fixup_a64_ldst8_tprel_lo12, 91 fixup_a64_ldst8_tprel_lo12_nc, 92 fixup_a64_ldst16_tprel_lo12, 93 fixup_a64_ldst16_tprel_lo12_nc, 94 fixup_a64_ldst32_tprel_lo12, 95 fixup_a64_ldst32_tprel_lo12_nc, 96 fixup_a64_ldst64_tprel_lo12, 97 fixup_a64_ldst64_tprel_lo12_nc, 98 99 // Produce the special fixups used by the general-dynamic TLS model. 100 fixup_a64_tlsdesc_adr_page, 101 fixup_a64_tlsdesc_ld64_lo12_nc, 102 fixup_a64_tlsdesc_add_lo12_nc, 103 fixup_a64_tlsdesc_call, 104 105 106 // Marker 107 LastTargetFixupKind, 108 NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind 109 }; 110 } 111 } 112 113 #endif 114