]>
Commit | Line | Data |
---|---|---|
2b03887a | 1 | use crate::spec::{cvs, Cc, LinkerFlavor, Lld, RelocModel, Target, TargetOptions}; |
f9f354fc XL |
2 | |
3 | // The PSP has custom linker requirements. | |
4 | const LINKER_SCRIPT: &str = include_str!("./mipsel_sony_psp_linker_script.ld"); | |
5 | ||
29967ef6 | 6 | pub fn target() -> Target { |
2b03887a FG |
7 | let pre_link_args = TargetOptions::link_args( |
8 | LinkerFlavor::Gnu(Cc::No, Lld::No), | |
9 | &["--emit-relocs", "--nmagic"], | |
10 | ); | |
f9f354fc | 11 | |
29967ef6 | 12 | Target { |
5e7ed085 | 13 | llvm_target: "mipsel-sony-psp".into(), |
29967ef6 | 14 | pointer_width: 32, |
5e7ed085 FG |
15 | data_layout: "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".into(), |
16 | arch: "mips".into(), | |
f9f354fc XL |
17 | |
18 | options: TargetOptions { | |
5e7ed085 FG |
19 | os: "psp".into(), |
20 | vendor: "sony".into(), | |
2b03887a | 21 | linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes), |
5e7ed085 | 22 | cpu: "mips2".into(), |
5e7ed085 | 23 | linker: Some("rust-lld".into()), |
f9f354fc XL |
24 | relocation_model: RelocModel::Static, |
25 | ||
26 | // PSP FPU only supports single precision floats. | |
5e7ed085 | 27 | features: "+single-float".into(), |
f9f354fc XL |
28 | |
29 | // PSP does not support trap-on-condition instructions. | |
5e7ed085 | 30 | llvm_args: cvs!["-mno-check-zero-division"], |
f9f354fc | 31 | pre_link_args, |
5e7ed085 | 32 | link_script: Some(LINKER_SCRIPT.into()), |
f9f354fc XL |
33 | ..Default::default() |
34 | }, | |
29967ef6 | 35 | } |
f9f354fc | 36 | } |