diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-09-26 13:44:36 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-09-26 13:44:36 -0400 |
| commit | 4d65373a3d0f616cceb4bef67289d014f30d8ea4 (patch) | |
| tree | 3a3aa42808895a117240fd32a3bbecfe2a7ed78c /src | |
| parent | 2c8864f634cbb42bf45f4f6b7109e9129b357247 (diff) | |
| parent | a94372231ca3c4daab3cf2bc54d2de135ecdd5e8 (diff) | |
| download | zig-4d65373a3d0f616cceb4bef67289d014f30d8ea4.tar.gz zig-4d65373a3d0f616cceb4bef67289d014f30d8ea4.zip | |
Merge pull request #3311 from LemonBoy/mips
Initial support for mipsel architecture
Diffstat (limited to 'src')
| -rw-r--r-- | src/analyze.cpp | 2 | ||||
| -rw-r--r-- | src/link.cpp | 1 | ||||
| -rw-r--r-- | src/target.cpp | 7 | ||||
| -rw-r--r-- | src/target.hpp | 1 |
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); |
