12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- //! Low level access to RISC-V processors
- //!
- //! # Minimum Supported Rust Version (MSRV)
- //!
- //! This crate is guaranteed to compile on stable Rust 1.59 and up. It *might*
- //! compile with older versions but that may change in any new patch release.
- //!
- //! # Features
- //!
- //! This crate provides:
- //!
- //! - Access to core registers like `mstatus` or `mcause`.
- //! - Interrupt manipulation mechanisms.
- //! - Wrappers around assembly instructions like `WFI`.
- //!
- //! # Optional features
- //!
- //! ## `critical-section-single-hart`
- //!
- //! This feature enables a [`critical-section`](https://github.com/rust-embedded/critical-section)
- //! implementation suitable for single-hart targets, based on disabling interrupts globally.
- //!
- //! It is **unsound** to enable it on multi-hart targets,
- //! and may cause functional problems in systems where some interrupts must be not be disabled
- //! or critical sections are managed as part of an RTOS. In these cases, you should use
- //! a target-specific implementation instead, typically provided by a HAL or RTOS crate.
- #![no_std]
- pub mod asm;
- pub mod delay;
- pub mod interrupt;
- pub mod register;
- #[macro_use]
- mod macros;
- #[cfg(all(riscv, feature = "critical-section-single-hart"))]
- mod critical_section;
- /// Used to reexport items for use in macros. Do not use directly.
- /// Not covered by semver guarantees.
- #[doc(hidden)]
- pub mod _export {
- pub use critical_section;
- }
|