aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2024-01-17 16:45:34 +0000
committerGitHub <noreply@github.com>2024-01-17 16:45:34 +0000
commit5ad88ea1699bed640b97e15f4525cb68dd80248e (patch)
treea2977e64227e4b1f91d5a6282707e818e260ffda /src
parent72d6b9b6834a3fe09e3759bb64b9a8549d6716f7 (diff)
parentd460dd2bdceaa5b897c43fe467584039a056a55a (diff)
Merge pull request #3104 from codename-irvin/dev
Add freestanding aarch64 target
Diffstat (limited to 'src')
-rw-r--r--src/build_settings.cpp9
-rw-r--r--src/llvm_backend.cpp2
2 files changed, 9 insertions, 2 deletions
diff --git a/src/build_settings.cpp b/src/build_settings.cpp
index 9d909fcae..1f57b5625 100644
--- a/src/build_settings.cpp
+++ b/src/build_settings.cpp
@@ -582,7 +582,13 @@ gb_global TargetMetrics target_freestanding_amd64_sysv = {
TargetABI_SysV,
};
-
+gb_global TargetMetrics target_freestanding_arm64 = {
+ TargetOs_freestanding,
+ TargetArch_arm64,
+ 8, 8, 8, 16,
+ str_lit("aarch64-none-elf"),
+ str_lit("e-m:o-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"),
+};
struct NamedTargetMetrics {
String name;
@@ -617,6 +623,7 @@ gb_global NamedTargetMetrics named_targets[] = {
{ str_lit("wasi_wasm64p32"), &target_wasi_wasm64p32 },
{ str_lit("freestanding_amd64_sysv"), &target_freestanding_amd64_sysv },
+ { str_lit("freestanding_arm64"), &target_freestanding_arm64 },
};
gb_global NamedTargetMetrics *selected_target_metrics;
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 0175d039e..003424e0a 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -2503,7 +2503,7 @@ gb_internal bool lb_generate_code(lbGenerator *gen) {
LLVMCodeModel code_mode = LLVMCodeModelDefault;
if (is_arch_wasm()) {
code_mode = LLVMCodeModelJITDefault;
- } else if (build_context.metrics.os == TargetOs_freestanding) {
+ } else if (is_arch_x86() && build_context.metrics.os == TargetOs_freestanding) {
code_mode = LLVMCodeModelKernel;
}