| //===- PPCRelocations.h - PPC32 Code Relocations ----------------*- C++ -*-===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // This file defines the PowerPC 32-bit target-specific relocation types. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef PPC32RELOCATIONS_H | |
| #define PPC32RELOCATIONS_H | |
| #include "llvm/CodeGen/MachineRelocation.h" | |
| // Hack to rid us of a PPC pre-processor symbol which is erroneously | |
| // defined in a PowerPC header file (bug in Linux/PPC) | |
| #ifdef PPC | |
| #undef PPC | |
| #endif | |
| namespace llvm { | |
| namespace PPC { | |
| enum RelocationType { | |
| // reloc_vanilla - A standard relocation, where the address of the | |
| // relocated object completely overwrites the address of the relocation. | |
| reloc_vanilla, | |
| // reloc_pcrel_bx - PC relative relocation, for the b or bl instructions. | |
| reloc_pcrel_bx, | |
| // reloc_pcrel_bcx - PC relative relocation, for BLT,BLE,BEQ,BGE,BGT,BNE, | |
| // and other bcx instructions. | |
| reloc_pcrel_bcx, | |
| // reloc_absolute_high - Absolute relocation, for the loadhi instruction | |
| // (which is really addis). Add the high 16-bits of the specified global | |
| // address into the low 16-bits of the instruction. | |
| reloc_absolute_high, | |
| // reloc_absolute_low - Absolute relocation, for the la instruction (which | |
| // is really an addi). Add the low 16-bits of the specified global | |
| // address into the low 16-bits of the instruction. | |
| reloc_absolute_low, | |
| // reloc_absolute_low_ix - Absolute relocation for the 64-bit load/store | |
| // instruction which have two implicit zero bits. | |
| reloc_absolute_low_ix | |
| }; | |
| } | |
| } | |
| #endif |