diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-07-05 21:15:40 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-07-05 21:15:40 +0000 |
commit | 148b6a419fbb20e2224a1b92c499d51513b9bc27 (patch) | |
tree | a073103268de94ed0a0f1373e7eb7f7bb56fbefc /lib/Target/ARM/ARMJITInfo.h | |
parent | 27e9d457d4047cf0051e17d9ca39740875d11440 (diff) | |
download | llvm-148b6a419fbb20e2224a1b92c499d51513b9bc27.tar.gz llvm-148b6a419fbb20e2224a1b92c499d51513b9bc27.tar.bz2 llvm-148b6a419fbb20e2224a1b92c499d51513b9bc27.tar.xz |
Initial ARM JIT support by Raul Fernandes Herbster.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37926 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMJITInfo.h')
-rw-r--r-- | lib/Target/ARM/ARMJITInfo.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMJITInfo.h b/lib/Target/ARM/ARMJITInfo.h new file mode 100644 index 0000000000..fc33cc2545 --- /dev/null +++ b/lib/Target/ARM/ARMJITInfo.h @@ -0,0 +1,51 @@ +//===- ARMJITInfo.h - ARM implementation of the JIT interface --*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by the Raul Herbster (raulherbster [at] gmail [dot] +// com) and is distributed under the University of Illinois Open Source License. +// See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file contains the declaration of the ARMJITInfo class. +// +//===----------------------------------------------------------------------===// + +#ifndef ARMJITINFO_H +#define ARMJITINFO_H + +#include "llvm/Target/TargetJITInfo.h" + +namespace llvm { + class ARMTargetMachine; + + class ARMJITInfo : public TargetJITInfo { + ARMTargetMachine &TM; + public: + ARMJITInfo(ARMTargetMachine &tm) : TM(tm) {useGOT = 0;} + + /// replaceMachineCodeForFunction - Make it so that calling the function + /// whose machine code is at OLD turns into a call to NEW, perhaps by + /// overwriting OLD with a branch to NEW. This is used for self-modifying + /// code. + /// + virtual void replaceMachineCodeForFunction(void *Old, void *New); + + /// emitFunctionStub - Use the specified MachineCodeEmitter object to emit a + /// small native function that simply calls the function at the specified + /// address. + virtual void *emitFunctionStub(void *Fn, MachineCodeEmitter &MCE); + + /// getLazyResolverFunction - Expose the lazy resolver to the JIT. + virtual LazyResolverFn getLazyResolverFunction(JITCompilerFn); + + /// relocate - Before the JIT can run a block of code that has been emitted, + /// it must rewrite the code to contain the actual addresses of any + /// referenced global symbols. + virtual void relocate(void *Function, MachineRelocation *MR, + unsigned NumRelocs, unsigned char* GOTBase); + }; +} + +#endif |