arm_sysregs/
macros.rs

1// SPDX-FileCopyrightText: Copyright The arm-sysregs Contributors.
2// SPDX-License-Identifier: MIT OR Apache-2.0
3
4/// Generates public functions named `read_$sysreg` and `write_$sysreg` to read or write
5/// (respectively) a value of type `$type` from/to the system register `$sysreg`.
6///
7/// `safe_read` and `safe_write` should only be specified for system registers which are indeed safe
8/// to read from or write any value to.
9#[macro_export]
10macro_rules! read_write_sysreg {
11    ($sysreg:ident $(: $asm_sysreg:ident)?, $type:ty $(: $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    (
16        $(#[$attributes:meta])*
17        $sysreg:ident $(: $asm_sysreg:ident)?, $type:ty $(: $bitflags_type:ty)?, safe_read $(, $fake_sysregs:expr)?
18    ) => {
19        $crate::read_sysreg!($sysreg $(: $asm_sysreg)?, $type $(: $bitflags_type)?, safe $(, $fake_sysregs)?);
20        $crate::write_sysreg! {
21            $(#[$attributes])*
22            $sysreg $(: $asm_sysreg)?, $type $(: $bitflags_type)? $(, $fake_sysregs)?
23        }
24    };
25}