1use core::arch::asm;
2
3pub fn iocsr_write_w(reg: usize, value: u32) {
5 unsafe {
6 asm!("iocsrwr.w {},{}", in(reg) value, in(reg) reg);
7 }
8}
9pub fn iocsr_write_d(reg: usize, value: u64) {
11 unsafe {
12 asm!("iocsrwr.d {},{}", in(reg) value, in(reg) reg);
13 }
14}
15pub fn iocsr_write_h(reg: usize, value: u16) {
17 unsafe {
18 asm!("iocsrwr.h {},{}", in(reg) value, in(reg) reg);
19 }
20}
21pub fn iocsr_write_b(reg: usize, value: u8) {
23 unsafe {
24 asm!("iocsrwr.b {},{}", in(reg) value, in(reg) reg);
25 }
26}
27
28pub fn iocsr_read_b(reg: usize) -> u8 {
30 let val: u8;
31 unsafe {
32 asm!("iocsrrd.b {},{}",out(reg) val, in(reg) reg);
33 }
34 val
35}
36
37pub fn iocsr_read_h(reg: usize) -> u16 {
39 let val: u16;
40 unsafe {
41 asm!("iocsrrd.h {},{}",out(reg) val, in(reg) reg);
42 }
43 val
44}
45
46pub fn iocsr_read_w(reg: usize) -> u32 {
48 let val: u32;
49 unsafe {
50 asm!("iocsrrd.w {},{}",out(reg) val, in(reg) reg);
51 }
52 val
53}
54
55pub fn iocsr_read_d(reg: usize) -> u64 {
57 let val: u64;
58 unsafe {
59 asm!("iocsrrd.d {},{}",out(reg) val, in(reg) reg);
60 }
61 val
62}