Macro ruspiro_arch_aarch64::define_aarch64_register [−][src]
macro_rules! define_aarch64_register {
(@ $(#[doc = $rdoc : expr]) * $name : ident < $t : ty >
{
$($(#[doc = $fdoc : expr]) * $field : ident OFFSET($offset : expr)
$(BITS($bits : expr)) ?
$([$($(#[doc = $fvdoc : expr]) * $enum : ident = $value : expr), *])
?), *
}) => { ... };
($(#[doc = $rdoc : expr]) * $name : ident < $t : ty >
{
$($(#[doc = $fdoc : expr]) * $field : ident OFFSET($offset : expr)
$(BITS($bits : expr)) ?
$([$($(#[doc = $fvdoc : expr]) * $enum : ident = $value : expr), *])
?), *
}) => { ... };
}
Expand description
Macro to define an Aarch64 system register and its fields
Examples
define_aarch64_register!(
/// Aarch64 register foo as 32Bit register
/// It's always a Read/Write register definition, check the register documentation
/// to verify write's are allowed
foo<u32> {
/// Register field BAR with it's enum fields
BAR OFFSET(0) [
/// Field value VAL1
VAL1 = 0b1,
VAL0 = 0b0
],
/// Register field BAR with it's own
/// enum like field values
BAZ OFFSET(1) BITS(2) [
VAL1 = 0b01,
VAL2 = 0b10,
VAL3 = 0b11
]
}
);
foo::write(
foo::BAR::VAL1 | foo::BAZ::VAL2
);