summaryrefslogtreecommitdiff
path: root/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
diff options
context:
space:
mode:
authorChristian Pirker <cpirker@a-bix.com>2014-02-24 11:34:50 +0000
committerChristian Pirker <cpirker@a-bix.com>2014-02-24 11:34:50 +0000
commitd7e12561a5de67edd691843f5795a4a8b470c03c (patch)
tree679d39fa034d310cacae8be57cf928c7e271163d /lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
parent58423c8f1a863151c9ca01ff6a1078c124b62181 (diff)
downloadllvm-d7e12561a5de67edd691843f5795a4a8b470c03c.tar.gz
llvm-d7e12561a5de67edd691843f5795a4a8b470c03c.tar.bz2
llvm-d7e12561a5de67edd691843f5795a4a8b470c03c.tar.xz
Add AArch64 big endian Target (aarch64_be)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202024 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp')
-rw-r--r--lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp b/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
index 82024ff87e..7118a7fd23 100644
--- a/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
+++ b/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
@@ -79,11 +79,12 @@ static uint64_t adjustFixupValue(unsigned Kind, uint64_t Value);
namespace {
class ELFAArch64AsmBackend : public AArch64AsmBackend {
-public:
uint8_t OSABI;
+ bool IsLittle; // Big or little endian
+public:
ELFAArch64AsmBackend(const Target &T, const StringRef TT,
- uint8_t _OSABI)
- : AArch64AsmBackend(T, TT), OSABI(_OSABI) { }
+ uint8_t _OSABI, bool isLittle)
+ : AArch64AsmBackend(T, TT), OSABI(_OSABI), IsLittle(isLittle) { }
bool fixupNeedsRelaxation(const MCFixup &Fixup,
uint64_t Value,
@@ -200,7 +201,7 @@ public:
}
MCObjectWriter *createObjectWriter(raw_ostream &OS) const {
- return createAArch64ELFObjectWriter(OS, OSABI);
+ return createAArch64ELFObjectWriter(OS, OSABI, IsLittle);
}
};
@@ -578,8 +579,15 @@ static uint64_t adjustFixupValue(unsigned Kind, uint64_t Value) {
}
MCAsmBackend *
-llvm::createAArch64AsmBackend(const Target &T, const MCRegisterInfo &MRI,
+llvm::createAArch64leAsmBackend(const Target &T, const MCRegisterInfo &MRI,
+ StringRef TT, StringRef CPU) {
+ Triple TheTriple(TT);
+ return new ELFAArch64AsmBackend(T, TT, TheTriple.getOS(), /*isLittle*/ true);
+}
+
+MCAsmBackend *
+llvm::createAArch64beAsmBackend(const Target &T, const MCRegisterInfo &MRI,
StringRef TT, StringRef CPU) {
Triple TheTriple(TT);
- return new ELFAArch64AsmBackend(T, TT, TheTriple.getOS());
+ return new ELFAArch64AsmBackend(T, TT, TheTriple.getOS(), /*isLittle*/ false);
}