ruspiro-arch-aarch64 0.1.5

This crate provides access to Aarch64 system registers as well as specific usefull aarch64 assembly instructions

RusPiRo Aarch64 API

This crate provides access to ARM Aarch64 system registers as well as specific assembly instructions. The system registers are organized based on the highest exception level they are available.

CI Latest Version Documentation License


To use this crate simply add the dependency to your Cargo.toml file:

ruspiro-arch-aarch64 = "0.1.5"

With the dependency maintained in the Cargo.toml file the different defined system registers can be accessed as shown in the following code snipped.

For each available system register a mdule with the registers name is available providing functions to read/write the contents of the register. Those read/write accesses can be either use raw values (u32, u64 - based on register size) or predifined register fields. If a register field is used value contained in the field is properly shifted and masked when written to or read from a register.

use ruspiro_arch_aarch64::register::*;

fn some_function() {
    // read the current exeption level - do this by accessing the predefined
    // register field
    let current_el = currentel::read(currentel::EL::Field);

    if current_el == currentel::EL::EL2 {
        // if a register definition provides predefined constants for specific
        // register fields those can be used for instance to write to the register
                | mair_el2::MAIR1::NGNRE
                | mair_el2::MAIR2::GRE
                | mair_el2::MAIR3::NC
                | mair_el2::MAIR4::NORM,


Licensed under Apache License, Version 2.0, (LICENSE-APACHE or or MIT (LICENSE-MIT or at your choice.