aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/analyze.cpp2
-rw-r--r--src/link.cpp1
-rw-r--r--src/target.cpp7
-rw-r--r--src/target.hpp1
4 files changed, 9 insertions, 2 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp
index bdb007a68a..e0ba82f9b5 100644
--- a/src/analyze.cpp
+++ b/src/analyze.cpp
@@ -918,6 +918,8 @@ bool want_first_arg_sret(CodeGen *g, FnTypeId *fn_type_id) {
return abi_class == X64CABIClass_MEMORY;
} else if (target_is_arm(g->zig_target)) {
return type_size(g, fn_type_id->return_type) > 16;
+ } else if (g->zig_target->arch == ZigLLVM_mipsel) {
+ return false;
}
zig_panic("TODO implement C ABI for this architecture. See https://github.com/ziglang/zig/issues/1481");
}
diff --git a/src/link.cpp b/src/link.cpp
index 785b522993..41fb2ca415 100644
--- a/src/link.cpp
+++ b/src/link.cpp
@@ -1816,7 +1816,6 @@ static void construct_linker_job_elf(LinkJob *lj) {
if (g->zig_target->os == OsZen) {
lj->args.append("-e");
lj->args.append("_start");
-
lj->args.append("--image-base=0x10000000");
}
}
diff --git a/src/target.cpp b/src/target.cpp
index 70c5b169ce..3f7bd75011 100644
--- a/src/target.cpp
+++ b/src/target.cpp
@@ -1450,6 +1450,7 @@ const char *arch_stack_pointer_register_name(ZigLLVM_ArchType arch) {
case ZigLLVM_aarch64_32:
case ZigLLVM_riscv32:
case ZigLLVM_riscv64:
+ case ZigLLVM_mipsel:
return "sp";
case ZigLLVM_amdgcn:
@@ -1469,7 +1470,6 @@ const char *arch_stack_pointer_register_name(ZigLLVM_ArchType arch) {
case ZigLLVM_mips:
case ZigLLVM_mips64:
case ZigLLVM_mips64el:
- case ZigLLVM_mipsel:
case ZigLLVM_msp430:
case ZigLLVM_nvptx:
case ZigLLVM_nvptx64:
@@ -1886,6 +1886,11 @@ bool target_is_riscv(const ZigTarget *target) {
return target->arch == ZigLLVM_riscv32 || target->arch == ZigLLVM_riscv64;
}
+bool target_is_mips(const ZigTarget *target) {
+ return target->arch == ZigLLVM_mips || target->arch == ZigLLVM_mipsel ||
+ target->arch == ZigLLVM_mips64 || target->arch == ZigLLVM_mips64el;
+}
+
unsigned target_fn_align(const ZigTarget *target) {
return 16;
}
diff --git a/src/target.hpp b/src/target.hpp
index b89b0bdc9d..c157b40011 100644
--- a/src/target.hpp
+++ b/src/target.hpp
@@ -172,6 +172,7 @@ bool target_can_exec(const ZigTarget *host_target, const ZigTarget *guest_target
ZigLLVM_OSType get_llvm_os_type(Os os_type);
bool target_is_arm(const ZigTarget *target);
+bool target_is_mips(const ZigTarget *target);
bool target_allows_addr_zero(const ZigTarget *target);
bool target_has_valgrind_support(const ZigTarget *target);
bool target_os_is_darwin(Os os);