]> git.lizzy.rs Git - rust.git/blob - compiler/rustc_target/src/spec/mipsel_sony_psp.rs
Rollup merge of #101420 - kraktus:doc_hir_local, r=cjgillot
[rust.git] / compiler / rustc_target / src / spec / mipsel_sony_psp.rs
1 use crate::spec::{cvs, Target, TargetOptions};
2 use crate::spec::{LinkerFlavor, LldFlavor, RelocModel};
3
4 // The PSP has custom linker requirements.
5 const LINKER_SCRIPT: &str = include_str!("./mipsel_sony_psp_linker_script.ld");
6
7 pub fn target() -> Target {
8     let pre_link_args = TargetOptions::link_args(LinkerFlavor::Ld, &["--emit-relocs", "--nmagic"]);
9
10     Target {
11         llvm_target: "mipsel-sony-psp".into(),
12         pointer_width: 32,
13         data_layout: "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".into(),
14         arch: "mips".into(),
15
16         options: TargetOptions {
17             os: "psp".into(),
18             vendor: "sony".into(),
19             linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
20             cpu: "mips2".into(),
21             linker: Some("rust-lld".into()),
22             relocation_model: RelocModel::Static,
23
24             // PSP FPU only supports single precision floats.
25             features: "+single-float".into(),
26
27             // PSP does not support trap-on-condition instructions.
28             llvm_args: cvs!["-mno-check-zero-division"],
29             pre_link_args,
30             link_script: Some(LINKER_SCRIPT.into()),
31             ..Default::default()
32         },
33     }
34 }