// SPDX-License-Identifier: MIT OR Apache-2.0 // // Copyright (c) 2018-2022 Andre Richter //! Architectural symmetric multiprocessing. //! //! # Orientation //! //! Since arch modules are imported into generic modules using the path attribute, the path of this //! file is: //! //! crate::cpu::smp::arch_smp use cortex_a::registers::*; use tock_registers::interfaces::Readable; //-------------------------------------------------------------------------------------------------- // Public Code //-------------------------------------------------------------------------------------------------- /// Return the executing core's id. #[inline(always)] pub fn core_id() -> T where T: From, { const CORE_MASK: u64 = 0b11; T::from((MPIDR_EL1.get() & CORE_MASK) as u8) }