#aarch64 #register #ruspiro

no-std ruspiro-arch-aarch64

该软件包提供了访问Aarch64系统寄存器的功能,以及特定的有用aarch64汇编指令。

8个版本

0.1.7 2021年12月28日
0.1.6 2021年12月28日
0.1.5 2021年8月30日
0.1.4 2021年4月23日
0.1.3 2020年9月23日

#417 in 无标准库

Download history 49/week @ 2024-03-12 49/week @ 2024-03-19 58/week @ 2024-03-26 66/week @ 2024-04-02 37/week @ 2024-04-09 56/week @ 2024-04-16 55/week @ 2024-04-23 42/week @ 2024-04-30 31/week @ 2024-05-07 39/week @ 2024-05-14 37/week @ 2024-05-21 40/week @ 2024-05-28 24/week @ 2024-06-04 27/week @ 2024-06-11 35/week @ 2024-06-18 29/week @ 2024-06-25

122 每月下载量
用于 10 个软件包(5个直接使用)

MIT/Apache

71KB
911

RusPiRo Aarch64 API

该软件包提供了访问ARM Aarch64系统寄存器的功能,以及特定的汇编指令。系统寄存器根据它们可用的最高异常级别进行组织。

CI Latest Version Documentation License

用法

要使用此软件包,只需将其依赖项添加到您的 Cargo.toml 文件中。

[dependencies]
ruspiro-arch-aarch64 = "0.1.7"

Cargo.toml 文件中维护依赖项后,可以像以下代码片段所示访问定义的不同系统寄存器。

对于每个可用的系统寄存器,都提供了一个以寄存器名称为名的模块,提供读取/写入寄存器内容的功能。这些读取/写入访问可以使用原始值(u32、u64 - 根据寄存器大小)或预定义的寄存器字段。如果使用寄存器字段,则在写入或从寄存器读取时,字段中的值将适当地移位和屏蔽。

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::write(
            mair_el2::MAIR0::NGNRNE
                | mair_el2::MAIR1::NGNRE
                | mair_el2::MAIR2::GRE
                | mair_el2::MAIR3::NC
                | mair_el2::MAIR4::NORM,
        );
    }
}

许可证

根据Apache许可证版本2.0(LICENSE-APACHEhttp://www.apache.org/licenses/LICENSE-2.0)或MIT(LICENSE-MIThttp://opensource.org/licenses/MIT)许可,由您选择。

依赖项

~14KB