Browse Source

Add freestanding aarch64 target

codename-irvin 1 year ago
parent
commit
76f52dd6c9
2 changed files with 10 additions and 2 deletions
  1. 9 1
      src/build_settings.cpp
  2. 1 1
      src/llvm_backend.cpp

+ 9 - 1
src/build_settings.cpp

@@ -582,7 +582,14 @@ gb_global TargetMetrics target_freestanding_amd64_sysv = {
 	TargetABI_SysV,
 	TargetABI_SysV,
 };
 };
 
 
-
+gb_global TargetMetrics target_freestanding_arm64_sysv = {
+	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"),
+	TargetABI_SysV,
+};
 
 
 struct NamedTargetMetrics {
 struct NamedTargetMetrics {
 	String name;
 	String name;
@@ -617,6 +624,7 @@ gb_global NamedTargetMetrics named_targets[] = {
 	{ str_lit("wasi_wasm64p32"),         &target_wasi_wasm64p32 },
 	{ str_lit("wasi_wasm64p32"),         &target_wasi_wasm64p32 },
 
 
 	{ str_lit("freestanding_amd64_sysv"), &target_freestanding_amd64_sysv },
 	{ str_lit("freestanding_amd64_sysv"), &target_freestanding_amd64_sysv },
+	{ str_lit("freestanding_arm64_sysv"), &target_freestanding_arm64_sysv },
 };
 };
 
 
 gb_global NamedTargetMetrics *selected_target_metrics;
 gb_global NamedTargetMetrics *selected_target_metrics;

+ 1 - 1
src/llvm_backend.cpp

@@ -2503,7 +2503,7 @@ gb_internal bool lb_generate_code(lbGenerator *gen) {
 	LLVMCodeModel code_mode = LLVMCodeModelDefault;
 	LLVMCodeModel code_mode = LLVMCodeModelDefault;
 	if (is_arch_wasm()) {
 	if (is_arch_wasm()) {
 		code_mode = LLVMCodeModelJITDefault;
 		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;
 		code_mode = LLVMCodeModelKernel;
 	}
 	}