llvm-6502/lib/Target/PowerPC/PPCRelocations.h
Nate Begeman 94be248dbb First pass at supporting relocations. Relocations are written correctly to
the file now, however the relocated address is currently wrong.  Fixing
that will require some deep pondering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30207 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-08 22:42:09 +00:00

53 lines
1.7 KiB
C++

//===- PPCRelocations.h - PPC32 Code Relocations ----------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and 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_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