Patch sent upstream for review: https://github.com/thepowersgang/mrustc/pull/276 diff --git a/src/trans/target.cpp b/src/trans/target.cpp index 420a2870..4d5eefb3 100644 --- a/src/trans/target.cpp +++ b/src/trans/target.cpp @@ -65,6 +65,13 @@ const TargetArch ARCH_POWERPC64LE = { { /*atomic(u8)=*/true, true, true, true, true }, TargetArch::Alignments(2, 4, 8, 16, 4, 8, 8) }; +// This is a guess +const TargetArch ARCH_RISCV64 = { + "riscv64", + 64, false, + { /*atomic(u8)=*/true, true, true, true, true }, + TargetArch::Alignments(2, 4, 8, 16, 4, 8, 8) +}; TargetSpec g_target; @@ -455,6 +462,13 @@ namespace ARCH_POWERPC64LE }; } + else if(target_name == "riscv64-unknown-linux-gnu") + { + return TargetSpec { + "unix", "linux", "gnu", {CodegenMode::Gnu11, false, "riscv64-unknown-linux-gnu", BACKEND_C_OPTS_GNU}, + ARCH_RISCV64 + }; + } else if(target_name == "i586-pc-windows-gnu") { return TargetSpec { diff --git a/tools/common/target_detect.h b/tools/common/target_detect.h index a052da6b..42fea91a 100644 --- a/tools/common/target_detect.h +++ b/tools/common/target_detect.h @@ -34,6 +34,8 @@ # define DEFAULT_TARGET_NAME "powerpc64-unknown-linux-gnu" # elif defined(__powerpc64__) && defined(__LITTLE_ENDIAN__) # define DEFAULT_TARGET_NAME "powerpc64le-unknown-linux-gnu" +# elif defined(__riscv) && __riscv_xlen == 64 +# define DEFAULT_TARGET_NAME "riscv64-unknown-linux-gnu" # else # warning "Unable to detect a suitable default target (linux-gnu)" # endif