Skip to content

Commit e8cc8d4

Browse files
committed
Adjust mtimecmp and msip design for CLINT module
1 parent 3e18a9a commit e8cc8d4

File tree

1 file changed

+14
-19
lines changed

1 file changed

+14
-19
lines changed

src/clint.rs

+14-19
Original file line numberDiff line numberDiff line change
@@ -12,40 +12,35 @@ pub mod mtime {
1212
}
1313

1414
/// msip register
15-
///
16-
/// TODO: not final API design; wait for const generics
1715
pub mod msip {
1816
use crate::pac;
19-
// pub fn set_value<const HART_ID: usize>(value: bool) {
20-
// unsafe {
21-
// (*pac::CLINT::ptr()).msip[HART_ID].write(|w| w.bits(if value { 1 } else { 0 }))
22-
// }
23-
// }
24-
25-
pub fn set_value(hart_id: usize, value: bool) {
17+
18+
/// set IPI interrupt flag for one given hart
19+
pub fn set_ipi(hart_id: usize) {
20+
unsafe {
21+
(*pac::CLINT::ptr()).msip[hart_id].write(|w|
22+
w.bits(1))
23+
}
24+
}
25+
/// clear IPI interrupt flag for one given hart
26+
pub fn clear_ipi(hart_id: usize) {
2627
unsafe {
2728
(*pac::CLINT::ptr()).msip[hart_id].write(|w|
28-
w.bits(if value { 1 } else { 0 }))
29+
w.bits(0))
2930
}
3031
}
3132
}
3233

3334
/// mtimecmp register
34-
///
35-
/// TODO: not final API design; wait for const generics
3635
pub mod mtimecmp {
3736
use crate::pac;
38-
// pub fn read<const HART_ID: usize>() -> u64 {
39-
// unsafe { (*pac::CLINT::ptr()).mtimecmp[HART_ID].read().bits() }
40-
// }
41-
// pub fn write<const HART_ID: usize>(value: u64) {
42-
// // Volume II: RISC-V Privileged Architectures V1.10 p.31, figure 3.15
43-
// unsafe { (*pac::CLINT::ptr()).mtimecmp[HART_ID].write(|w| w.bits(value)) };
44-
// }
37+
38+
/// Read 64-bit mtimecmp register for certain hart id
4539
pub fn read(hart_id: usize) -> u64 {
4640
unsafe { (*pac::CLINT::ptr()).mtimecmp[hart_id].read().bits() }
4741
}
4842

43+
/// Write 64-bit mtimecmp register for certain hart id
4944
pub fn write(hart_id: usize, bits: u64) {
5045
// Volume II: RISC-V Privileged Architectures V1.10 p.31, figure 3.15
5146
unsafe { (*pac::CLINT::ptr()).mtimecmp[hart_id].write(|w|

0 commit comments

Comments
 (0)