diff options
| author | Yuki Okushi <huyuumi.dev@gmail.com> | 2020-11-03 15:27:21 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-03 15:27:21 +0900 |
| commit | 1cb137b3e955375115c76d2d66e9881435adfada (patch) | |
| tree | 7cd053d6730f3d1a1ec754e445d3161df9eb9a52 /compiler | |
| parent | cf062179a84c8f3f619ce86b0e794b34825a36ba (diff) | |
| parent | 5130f2e777b1f83783e5a148e6de1fb03e9ad1ef (diff) | |
| download | rust-1cb137b3e955375115c76d2d66e9881435adfada.tar.gz rust-1cb137b3e955375115c76d2d66e9881435adfada.zip | |
Rollup merge of #78676 - kiffie:embedded-bare-mipsr2, r=jonas-schievink
add mipsel-unknown-none target This adds a target for bare MIPS32r2, little endian, softfloat. This target can be used for PIC32 microcontrollers (or possibly for other devices that have a MIPS MCU core such as the M4K core). Tried to find a name for the target that is in line with the naming scheme apparently used for the other MIPS targets. r? `@jonas-schievink`
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_target/src/spec/mipsel_unknown_none.rs | 42 | ||||
| -rw-r--r-- | compiler/rustc_target/src/spec/mod.rs | 1 |
2 files changed, 43 insertions, 0 deletions
diff --git a/compiler/rustc_target/src/spec/mipsel_unknown_none.rs b/compiler/rustc_target/src/spec/mipsel_unknown_none.rs new file mode 100644 index 00000000000..1651ff9c2d6 --- /dev/null +++ b/compiler/rustc_target/src/spec/mipsel_unknown_none.rs @@ -0,0 +1,42 @@ +//! Bare MIPS32r2, little endian, softfloat, O32 calling convention +//! +//! Can be used for MIPS M4K core (e.g. on PIC32MX devices) + +use crate::spec::abi::Abi; +use crate::spec::{LinkerFlavor, LldFlavor, RelocModel}; +use crate::spec::{PanicStrategy, Target, TargetOptions}; + +pub fn target() -> Target { + Target { + llvm_target: "mipsel-unknown-none".to_string(), + target_endian: "little".to_string(), + pointer_width: 32, + target_c_int_width: "32".to_string(), + data_layout: "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".to_string(), + arch: "mips".to_string(), + target_os: "none".to_string(), + target_env: String::new(), + target_vendor: String::new(), + linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld), + + options: TargetOptions { + cpu: "mips32r2".to_string(), + features: "+mips32r2,+soft-float,+noabicalls".to_string(), + max_atomic_width: Some(32), + executables: true, + linker: Some("rust-lld".to_owned()), + panic_strategy: PanicStrategy::Abort, + relocation_model: RelocModel::Static, + unsupported_abis: vec![ + Abi::Stdcall, + Abi::Fastcall, + Abi::Vectorcall, + Abi::Thiscall, + Abi::Win64, + Abi::SysV64, + ], + emit_debug_gdb_scripts: false, + ..Default::default() + }, + } +} diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index 1d3e61c4992..ba9e2f7fa06 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -653,6 +653,7 @@ supported_targets! { ("powerpc64-wrs-vxworks", powerpc64_wrs_vxworks), ("mipsel-sony-psp", mipsel_sony_psp), + ("mipsel-unknown-none", mipsel_unknown_none), ("thumbv4t-none-eabi", thumbv4t_none_eabi), } |
