-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
af40b96
commit ea92353
Showing
4 changed files
with
43 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
# riscv-slic | ||
# riscv-slic: Software-Level Interrupt Controller for RISC-V Microcontrollers | ||
|
||
Crate for enabling vectored handling of software interrupts for RISC-V targets inspired by PLIC. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
[![crates.io](https://img.shields.io/crates/d/riscv-slic.svg)](https://crates.io/crates/riscv-slic) | ||
[![crates.io](https://img.shields.io/crates/v/riscv-slic.svg)](https://crates.io/crates/riscv-slic) | ||
|
||
# `riscv-slic` | ||
|
||
Crate for enabling vectored handling of software interrupts for RISC-V targets inspired by PLIC. | ||
|
||
This crate creates a software interrupt vector with as many interrupt sources as requested by the user. | ||
Each software interrupt source can be enabled/disabled independently, and you can assign a different priority level to each of them. | ||
Priority level 0 is reserved to disable the interrupt. By default, all the software interrupt sources are set to priority level 0. | ||
The maximum allowed priority level is 255. | ||
Additionally, you can set a software interrupt priority threshold. | ||
Only interrupt sources with a priority level above the threshold will cause interrupts. | ||
A threshold of 0 means that all the active interrupt sources can cause an interrupt. | ||
Alternatively, a threshold of 255 implies that none of the interrupt sources will cause an interrupt. | ||
|
||
If you pend a software interrupt source with a priority higher than the current threshold, it will cause a software interrupt in your RISC-V processor. | ||
How software interrupts are triggered depends on your target, and you need to activate a proper feature when compiling this crate. | ||
If your target has a CLINT peripheral, you can activate the `clint-backend` feature. | ||
Currently, this is the only supported way to use this crate. | ||
Open an issue or a RFC in GitHub if you would like other particular target to work with `riscv-slic`. | ||
|
||
|
||
## [Documentation](https://docs.rs/crate/riscv-slic) | ||
|
||
## Minimum Supported Rust Version (MSRV) | ||
|
||
This crate is guaranteed to compile on stable Rust 1.75 and up. | ||
It *might* compile with older versions but that may change in any new patch release. |