diff options
Diffstat (limited to 'src/trans/target.cpp')
-rw-r--r-- | src/trans/target.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/trans/target.cpp b/src/trans/target.cpp index 1d683af9..2bf655a9 100644 --- a/src/trans/target.cpp +++ b/src/trans/target.cpp @@ -24,6 +24,11 @@ const TargetArch ARCH_X86 = { 32, false, { /*atomic(u8)=*/true, false, true, false, true } }; +const TargetArch ARCH_ARM64 = { + "aarch64", + 64, false, + { /*atomic(u8)=*/true, true, true, true, true } +}; const TargetArch ARCH_ARM32 = { "arm", 32, false, @@ -84,6 +89,10 @@ namespace { rv.m_arch = ARCH_ARM32; } + else if( key_val.value.as_string() == ARCH_ARM64.m_name ) + { + rv.m_arch = ARCH_ARM64; + } else if( key_val.value.as_string() == ARCH_X86.m_name ) { rv.m_arch = ARCH_X86; @@ -224,6 +233,13 @@ namespace ARCH_ARM32 }; } + else if(target_name == "aarch64-linux-gnu") + { + return TargetSpec { + "unix", "linux", "gnu", CodegenMode::Gnu11, "aarch64-linux-gnu", + ARCH_ARM64 + }; + } else if(target_name == "i586-windows-gnu") { return TargetSpec { @@ -280,6 +296,13 @@ namespace ARCH_ARM32 }; } + else if(target_name == "aarch64-unknown-openbsd") + { + return TargetSpec { + "unix", "openbsd", "gnu", CodegenMode::Gnu11, "aarch64-unknown-openbsd", + ARCH_ARM64 + }; + } else { ::std::cerr << "Unknown target name '" << target_name << "'" << ::std::endl; |