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 无标准库
122 每月下载量
用于 10 个软件包(5个直接使用)
71KB
911 行
RusPiRo Aarch64 API
该软件包提供了访问ARM Aarch64系统寄存器的功能,以及特定的汇编指令。系统寄存器根据它们可用的最高异常级别进行组织。
用法
要使用此软件包,只需将其依赖项添加到您的 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-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)或MIT(LICENSE-MIT 或 http://opensource.org/licenses/MIT)许可,由您选择。
依赖项
~14KB