aboutsummaryrefslogtreecommitdiff
path: root/embassy-rp/src/multicore.rs
diff options
context:
space:
mode:
Diffstat (limited to 'embassy-rp/src/multicore.rs')
-rw-r--r--embassy-rp/src/multicore.rs24
1 files changed, 22 insertions, 2 deletions
diff --git a/embassy-rp/src/multicore.rs b/embassy-rp/src/multicore.rs
index d10b6837c..adedc98ad 100644
--- a/embassy-rp/src/multicore.rs
+++ b/embassy-rp/src/multicore.rs
@@ -38,11 +38,11 @@
38//! 38//!
39//! embassy_rp::multicore::spawn_core1(p.CORE1, unsafe { &mut CORE1_STACK }, move || { 39//! embassy_rp::multicore::spawn_core1(p.CORE1, unsafe { &mut CORE1_STACK }, move || {
40//! let executor1 = EXECUTOR1.init(Executor::new()); 40//! let executor1 = EXECUTOR1.init(Executor::new());
41//! executor1.run(|spawner| spawner.spawn(core1_task()).unwrap()); 41//! executor1.run(|spawner| spawner.spawn(core1_task().unwrap()));
42//! }); 42//! });
43//! 43//!
44//! let executor0 = EXECUTOR0.init(Executor::new()); 44//! let executor0 = EXECUTOR0.init(Executor::new());
45//! executor0.run(|spawner| spawner.spawn(core0_task()).unwrap()) 45//! executor0.run(|spawner| spawner.spawn(core0_task().unwrap()))
46//! } 46//! }
47//! ``` 47//! ```
48 48
@@ -57,6 +57,26 @@ const PAUSE_TOKEN: u32 = 0xDEADBEEF;
57const RESUME_TOKEN: u32 = !0xDEADBEEF; 57const RESUME_TOKEN: u32 = !0xDEADBEEF;
58static IS_CORE1_INIT: AtomicBool = AtomicBool::new(false); 58static IS_CORE1_INIT: AtomicBool = AtomicBool::new(false);
59 59
60/// Represents a partiticular CPU core (SIO_CPUID)
61#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)]
62#[cfg_attr(feature = "defmt", derive(defmt::Format))]
63#[repr(u8)]
64pub enum CoreId {
65 /// Core 0
66 Core0 = 0x0,
67 /// Core 1
68 Core1 = 0x1,
69}
70
71/// Gets which core we are currently executing from
72pub fn current_core() -> CoreId {
73 if pac::SIO.cpuid().read() == 0 {
74 CoreId::Core0
75 } else {
76 CoreId::Core1
77 }
78}
79
60#[inline(always)] 80#[inline(always)]
61unsafe fn core1_setup(stack_bottom: *mut usize) { 81unsafe fn core1_setup(stack_bottom: *mut usize) {
62 if install_stack_guard(stack_bottom).is_err() { 82 if install_stack_guard(stack_bottom).is_err() {