1#[macro_export]
10macro_rules! read_write_sysreg {
11 ($sysreg:ident $(: $asm_sysreg:ident)?, $type:ident $(: $bitflags_type:ty)?, safe_read, safe_write $(, $fake_sysregs:expr)?) => {
12 $crate::read_sysreg!($sysreg $(: $asm_sysreg)?, $type $(: $bitflags_type)?, safe $(, $fake_sysregs)?);
13 $crate::write_sysreg!($sysreg $(: $asm_sysreg)?, $type $(: $bitflags_type)?, safe $(, $fake_sysregs)?);
14 };
15 ($sysreg:ident : ($coproc:ident, $opc1:literal, $crm:ident, $crn:ident, $opc2:literal), $type:ident $(: $bitflags_type:ty)?, safe_read, safe_write $(, $fake_sysregs:expr)?) => {
16 $crate::read_sysreg!($sysreg : ($coproc, $opc1, $crm, $crn, $opc2), $type $(: $bitflags_type)?, safe $(, $fake_sysregs)?);
17 $crate::write_sysreg!($sysreg : ($coproc, $opc1, $crm, $crn, $opc2), $type $(: $bitflags_type)?, safe $(, $fake_sysregs)?);
18 };
19 ($sysreg:ident : ($coproc:ident, $opc1:literal, $crm:ident), $type:ident $(: $bitflags_type:ty)?, safe_read, safe_write $(, $fake_sysregs:expr)?) => {
20 $crate::read_sysreg!($sysreg : ($coproc, $opc1, $crm), $type $(: $bitflags_type)?, safe $(, $fake_sysregs)?);
21 $crate::write_sysreg!($sysreg : ($coproc, $opc1, $crm), $type $(: $bitflags_type)?, safe $(, $fake_sysregs)?);
22 };
23 (
24 $(#[$attributes:meta])*
25 $sysreg:ident $(: $asm_sysreg:ident)?, $type:ident $(: $bitflags_type:ty)?, safe_read $(, $fake_sysregs:expr)?
26 ) => {
27 $crate::read_sysreg!($sysreg $(: $asm_sysreg)?, $type $(: $bitflags_type)?, safe $(, $fake_sysregs)?);
28 $crate::write_sysreg! {
29 $(#[$attributes])*
30 $sysreg $(: $asm_sysreg)?, $type $(: $bitflags_type)? $(, $fake_sysregs)?
31 }
32 };
33 (
34 $(#[$attributes:meta])*
35 $sysreg:ident : ($coproc:ident, $opc1:literal, $crm:ident, $crn:ident, $opc2:literal), $type:ident $(: $bitflags_type:ty)?, safe_read $(, $fake_sysregs:expr)?
36 ) => {
37 $crate::read_sysreg!($sysreg : ($coproc, $opc1, $crm, $crn, $opc2), $type $(: $bitflags_type)?, safe $(, $fake_sysregs)?);
38 $crate::write_sysreg! {
39 $(#[$attributes])*
40 $sysreg : ($coproc, $opc1, $crm, $crn, $opc2), $type $(: $bitflags_type)? $(, $fake_sysregs)?
41 }
42 };
43 (
44 $(#[$attributes:meta])*
45 $sysreg:ident : ($coproc:ident, $opc1:literal, $crm:ident), $type:ident $(: $bitflags_type:ty)?, safe_read $(, $fake_sysregs:expr)?
46 ) => {
47 $crate::read_sysreg!($sysreg : ($coproc, $opc1, $crm), $type $(: $bitflags_type)?, safe $(, $fake_sysregs)?);
48 $crate::write_sysreg! {
49 $(#[$attributes])*
50 $sysreg : ($coproc, $opc1, $crm), $type $(: $bitflags_type)? $(, $fake_sysregs)?
51 }
52 };
53}