[][src]Macro ruspiro_register::define_aarch32_register

macro_rules! define_aarch32_register {
    (@$(#[doc = $rdoc:expr])*
       $name:ident $crn:ident, $op1:tt, $crm:ident, $op2:tt {
            $(
                $(#[doc = $fdoc:expr])*
                $field:ident OFFSET($offset:expr) $(BITS($bits:expr))? $([
                    $($(#[doc = $fvdoc:expr])* $enum:ident = $value:expr),*
                ])?),*
    }) => { ... };
    ($(#[doc = $rdoc:expr])*
     $name:ident $crn:ident, $op1:tt, $crm:ident, $op2:tt {
        $(
            $(#[doc = $fdoc:expr])*
            $field:ident OFFSET($offset:expr) $(BITS($bits:expr))? $([
                $(
                    $(#[doc = $fvdoc:expr])*
                    $enum:ident = $value:expr
                ),*
            ])?
        ),*
    }) => { ... };
}

Macro to define an Aarch32 (CP15) system register and its fields

Examples

define_aarch32_register!(
    /// This is a aarch32 register
    foo c1, 0, c0, 1 {
        /// This is the field BAR of this register
        BAR OFFSET(0) [
            /// This is a field value of this register field
            VAL1 = 0b1,
            VAL0 = 0b0
        ],
        BAZ OFFSET(1) BITS(2) [
            VAL1 = 0b01,
            VAL2 = 0b10,
            VAL3 = 0b11
        ]
    }
);

    foo::write(
        foo::BAR::VAL1 | foo::BAZ::VAL2
    );