mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-09 11:25:55 +00:00
Allow the target machines to specify endianness and pointer size
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5128 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -39,13 +39,14 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
TargetMachine(const std::string &name, // Can only create subclasses...
|
TargetMachine(const std::string &name, // Can only create subclasses...
|
||||||
|
bool LittleEndian = false,
|
||||||
unsigned char SubWordSize = 1, unsigned char IntRegSize = 8,
|
unsigned char SubWordSize = 1, unsigned char IntRegSize = 8,
|
||||||
unsigned char PtrSize = 8, unsigned char PtrAl = 8,
|
unsigned char PtrSize = 8, unsigned char PtrAl = 8,
|
||||||
unsigned char DoubleAl = 8, unsigned char FloatAl = 4,
|
unsigned char DoubleAl = 8, unsigned char FloatAl = 4,
|
||||||
unsigned char LongAl = 8, unsigned char IntAl = 4,
|
unsigned char LongAl = 8, unsigned char IntAl = 4,
|
||||||
unsigned char ShortAl = 2, unsigned char ByteAl = 1)
|
unsigned char ShortAl = 2, unsigned char ByteAl = 1)
|
||||||
: Name(name), DataLayout(name, SubWordSize, IntRegSize, PtrSize, PtrAl,
|
: Name(name), DataLayout(name, LittleEndian, SubWordSize, IntRegSize,
|
||||||
DoubleAl, FloatAl, LongAl,
|
PtrSize, PtrAl, DoubleAl, FloatAl, LongAl,
|
||||||
IntAl, ShortAl, ByteAl) {}
|
IntAl, ShortAl, ByteAl) {}
|
||||||
public:
|
public:
|
||||||
virtual ~TargetMachine() {}
|
virtual ~TargetMachine() {}
|
||||||
|
@@ -8,6 +8,18 @@
|
|||||||
#ifndef LLVM_TARGET_TARGETMACHINEIMPLS_H
|
#ifndef LLVM_TARGET_TARGETMACHINEIMPLS_H
|
||||||
#define LLVM_TARGET_TARGETMACHINEIMPLS_H
|
#define LLVM_TARGET_TARGETMACHINEIMPLS_H
|
||||||
|
|
||||||
|
namespace TM {
|
||||||
|
enum {
|
||||||
|
PtrSizeMask = 1,
|
||||||
|
PtrSize32 = 0,
|
||||||
|
PtrSize64 = 1,
|
||||||
|
|
||||||
|
EndianMask = 2,
|
||||||
|
LittleEndian = 0,
|
||||||
|
BigEndian = 2,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
class TargetMachine;
|
class TargetMachine;
|
||||||
|
|
||||||
// allocateSparcTargetMachine - Allocate and return a subclass of TargetMachine
|
// allocateSparcTargetMachine - Allocate and return a subclass of TargetMachine
|
||||||
@@ -16,8 +28,11 @@ class TargetMachine;
|
|||||||
TargetMachine *allocateSparcTargetMachine();
|
TargetMachine *allocateSparcTargetMachine();
|
||||||
|
|
||||||
// allocateX86TargetMachine - Allocate and return a subclass of TargetMachine
|
// allocateX86TargetMachine - Allocate and return a subclass of TargetMachine
|
||||||
// that implements the X86 backend.
|
// that implements the X86 backend. The X86 target machine can run in
|
||||||
|
// "emulation" mode, where it is capable of emulating machines of larger pointer
|
||||||
|
// size and different endianness if desired.
|
||||||
//
|
//
|
||||||
TargetMachine *allocateX86TargetMachine();
|
TargetMachine *allocateX86TargetMachine(unsigned Configuration =
|
||||||
|
TM::PtrSize32|TM::LittleEndian);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user