1551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines//===- AArch64TargetMachine.cpp -------------------------------------------===//
2551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines//
3551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines//                     The MCLinker Project
4551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines//
5551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines// This file is distributed under the University of Illinois Open Source
6551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines// License. See LICENSE.TXT for details.
7551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines//
8551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines//===----------------------------------------------------------------------===//
9551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines#include "AArch64TargetMachine.h"
10551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines#include "AArch64.h"
11551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines
12551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines#include <mcld/Support/TargetRegistry.h>
13551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines
14551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hinesusing namespace mcld;
15551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines
16551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen HinesAArch64BaseTargetMachine::AArch64BaseTargetMachine(llvm::TargetMachine& pPM,
17551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines                                                const llvm::Target &pLLVMTarget,
18551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines                                                const mcld::Target &pMCLDTarget,
19551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines                                                const std::string& pTriple)
20551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines  : MCLDTargetMachine(pPM, pLLVMTarget, pMCLDTarget, pTriple) {
21551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines}
22551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines
23551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines//===----------------------------------------------------------------------===//
24551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines// Initialize MCLDTargetMachine
25551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines//===----------------------------------------------------------------------===//
26551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hinesextern "C" void MCLDInitializeAArch64LDTarget() {
27551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines  // Register createTargetMachine function pointer to mcld::Target
28551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines  mcld::RegisterTargetMachine<mcld::AArch64BaseTargetMachine> X(mcld::TheAArch64Target);
29551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines}
30551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines
31