aarch64-paging

借助 aarch64-paging crate,您可根据 AArch64 虚拟内存系统架构创建分页表。

  1. use aarch64_paging::{
  2. idmap::IdMap,
  3. paging::{Attributes, MemoryRegion},
  4. };
  5. const ASID: usize = 1;
  6. const ROOT_LEVEL: usize = 1;
  7. // Create a new page table with identity mapping.
  8. let mut idmap = IdMap::new(ASID, ROOT_LEVEL);
  9. // Map a 2 MiB region of memory as read-only.
  10. idmap.map_range(
  11. &MemoryRegion::new(0x80200000, 0x80400000),
  12. Attributes::NORMAL | Attributes::NON_GLOBAL | Attributes::READ_ONLY,
  13. ).unwrap();
  14. // Set `TTBR0_EL1` to activate the page table.
  15. idmap.activate();
  • 目前,该方法仅支持 EL1 级别,但也可以直接添加对其他异常级别的支持。
  • 在 Android 中,该方法适用于 受保护的虚拟机固件
  • 由于此示例需要在真实硬件上或在 QEMU 中运行,因此没有简单的运行方法可用。