mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 17:32:19 +00:00
Register Asm backend. Add functions to MipsAsmBackend.
Patch by Reed Kotler at Mips Technologies. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140886 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
82ea7314ca
commit
4b6ee7a352
@ -33,6 +33,44 @@ public:
|
|||||||
unsigned getNumFixupKinds() const {
|
unsigned getNumFixupKinds() const {
|
||||||
return 1; //tbd
|
return 1; //tbd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// ApplyFixup - Apply the \arg Value for given \arg Fixup into the provided
|
||||||
|
/// data fragment, at the offset specified by the fixup and following the
|
||||||
|
/// fixup kind as appropriate.
|
||||||
|
void ApplyFixup(const MCFixup &Fixup, char *Data, unsigned DataSize,
|
||||||
|
uint64_t Value) const {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @name Target Relaxation Interfaces
|
||||||
|
/// @{
|
||||||
|
|
||||||
|
/// MayNeedRelaxation - Check whether the given instruction may need
|
||||||
|
/// relaxation.
|
||||||
|
///
|
||||||
|
/// \param Inst - The instruction to test.
|
||||||
|
bool MayNeedRelaxation(const MCInst &Inst) const {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// RelaxInstruction - Relax the instruction in the given fragment to the next
|
||||||
|
/// wider instruction.
|
||||||
|
///
|
||||||
|
/// \param Inst - The instruction to relax, which may be the same as the
|
||||||
|
/// output.
|
||||||
|
/// \parm Res [output] - On return, the relaxed instruction.
|
||||||
|
void RelaxInstruction(const MCInst &Inst, MCInst &Res) const {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @}
|
||||||
|
|
||||||
|
/// WriteNopData - Write an (optimal) nop sequence of Count bytes to the given
|
||||||
|
/// output. If the target cannot generate such a sequence, it should return an
|
||||||
|
/// error.
|
||||||
|
///
|
||||||
|
/// \return - True on success.
|
||||||
|
bool WriteNopData(uint64_t Count, MCObjectWriter *OW) const {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class MipsEB_AsmBackend : public MipsAsmBackend {
|
class MipsEB_AsmBackend : public MipsAsmBackend {
|
||||||
@ -69,3 +107,11 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MCAsmBackend *llvm::createMipsAsmBackend(const Target &T, StringRef TT) {
|
||||||
|
Triple TheTriple(TT);
|
||||||
|
|
||||||
|
// just return little endian for now
|
||||||
|
//
|
||||||
|
return new MipsEL_AsmBackend(T, Triple(TT).getOS());
|
||||||
|
}
|
||||||
|
@ -116,6 +116,12 @@ extern "C" void LLVMInitializeMipsTargetMC() {
|
|||||||
TargetRegistry::RegisterMCCodeEmitter(TheMips64elTarget,
|
TargetRegistry::RegisterMCCodeEmitter(TheMips64elTarget,
|
||||||
createMipsMCCodeEmitter);
|
createMipsMCCodeEmitter);
|
||||||
|
|
||||||
|
// Register the asm backend.
|
||||||
|
TargetRegistry::RegisterMCAsmBackend(TheMipsTarget, createMipsAsmBackend);
|
||||||
|
TargetRegistry::RegisterMCAsmBackend(TheMipselTarget, createMipsAsmBackend);
|
||||||
|
TargetRegistry::RegisterMCAsmBackend(TheMips64Target, createMipsAsmBackend);
|
||||||
|
TargetRegistry::RegisterMCAsmBackend(TheMips64elTarget, createMipsAsmBackend);
|
||||||
|
|
||||||
// Register the MC subtarget info.
|
// Register the MC subtarget info.
|
||||||
TargetRegistry::RegisterMCSubtargetInfo(TheMipsTarget,
|
TargetRegistry::RegisterMCSubtargetInfo(TheMipsTarget,
|
||||||
createMipsMCSubtargetInfo);
|
createMipsMCSubtargetInfo);
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#define MIPSMCTARGETDESC_H
|
#define MIPSMCTARGETDESC_H
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
|
class MCAsmBackend;
|
||||||
class MCInstrInfo;
|
class MCInstrInfo;
|
||||||
class MCCodeEmitter;
|
class MCCodeEmitter;
|
||||||
class MCContext;
|
class MCContext;
|
||||||
@ -30,6 +31,8 @@ extern Target TheMips64elTarget;
|
|||||||
MCCodeEmitter *createMipsMCCodeEmitter(const MCInstrInfo &MCII,
|
MCCodeEmitter *createMipsMCCodeEmitter(const MCInstrInfo &MCII,
|
||||||
const MCSubtargetInfo &STI,
|
const MCSubtargetInfo &STI,
|
||||||
MCContext &Ctx);
|
MCContext &Ctx);
|
||||||
|
|
||||||
|
MCAsmBackend *createMipsAsmBackend(const Target &T, StringRef TT);
|
||||||
} // End llvm namespace
|
} // End llvm namespace
|
||||||
|
|
||||||
// Defines symbolic names for Mips registers. This defines a mapping from
|
// Defines symbolic names for Mips registers. This defines a mapping from
|
||||||
|
Loading…
x
Reference in New Issue
Block a user