aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-rp/build.rs22
-rw-r--r--embassy-rp/src/multicore.rs2
2 files changed, 22 insertions, 2 deletions
diff --git a/embassy-rp/build.rs b/embassy-rp/build.rs
index 3216a3826..a8d387611 100644
--- a/embassy-rp/build.rs
+++ b/embassy-rp/build.rs
@@ -1,7 +1,8 @@
1use std::env; 1use std::env;
2use std::ffi::OsStr;
2use std::fs::File; 3use std::fs::File;
3use std::io::Write; 4use std::io::Write;
4use std::path::PathBuf; 5use std::path::{Path, PathBuf};
5 6
6fn main() { 7fn main() {
7 if env::var("CARGO_FEATURE_RP2040").is_ok() { 8 if env::var("CARGO_FEATURE_RP2040").is_ok() {
@@ -16,4 +17,23 @@ fn main() {
16 println!("cargo:rerun-if-changed=build.rs"); 17 println!("cargo:rerun-if-changed=build.rs");
17 println!("cargo:rerun-if-changed=link-rp.x.in"); 18 println!("cargo:rerun-if-changed=link-rp.x.in");
18 } 19 }
20
21 // code below taken from https://github.com/rust-embedded/cortex-m/blob/master/cortex-m-rt/build.rs
22
23 let mut target = env::var("TARGET").unwrap();
24
25 // When using a custom target JSON, `$TARGET` contains the path to that JSON file. By
26 // convention, these files are named after the actual target triple, eg.
27 // `thumbv7m-customos-elf.json`, so we extract the file stem here to allow custom target specs.
28 let path = Path::new(&target);
29 if path.extension() == Some(OsStr::new("json")) {
30 target = path
31 .file_stem()
32 .map_or(target.clone(), |stem| stem.to_str().unwrap().to_string());
33 }
34
35 println!("cargo::rustc-check-cfg=cfg(has_fpu)");
36 if target.ends_with("-eabihf") {
37 println!("cargo:rustc-cfg=has_fpu");
38 }
19} 39}
diff --git a/embassy-rp/src/multicore.rs b/embassy-rp/src/multicore.rs
index 7e2e776ea..81de84907 100644
--- a/embassy-rp/src/multicore.rs
+++ b/embassy-rp/src/multicore.rs
@@ -170,7 +170,7 @@ where
170 }; 170 };
171 171
172 // Enable FPU 172 // Enable FPU
173 #[cfg(feature = "_rp235x")] 173 #[cfg(all(feature = "_rp235x", has_fpu))]
174 unsafe { 174 unsafe {
175 let p = cortex_m::Peripherals::steal(); 175 let p = cortex_m::Peripherals::steal();
176 p.SCB.cpacr.modify(|cpacr| cpacr | (3 << 20) | (3 << 22)); 176 p.SCB.cpacr.modify(|cpacr| cpacr | (3 << 20) | (3 << 22));