aarch64-paging
این crate aarch64-paging به شما امکان میدهد page tableها را مطابق با معماری سیستم حافظهمجازی AArch64 ایجاد کنید.
use aarch64_paging::{
idmap::IdMap,
paging::{Attributes, MemoryRegion},
};
const ASID: usize = 1;
const ROOT_LEVEL: usize = 1;
// Create a new page table with identity mapping.
let mut idmap = IdMap::new(ASID, ROOT_LEVEL);
// Map a 2 MiB region of memory as read-only.
idmap.map_range(
&MemoryRegion::new(0x80200000, 0x80400000),
Attributes::NORMAL | Attributes::NON_GLOBAL | Attributes::READ_ONLY,
).unwrap();
// Set `TTBR0_EL1` to activate the page table.
idmap.activate();
- در حال حاضر فقط از EL1 پشتیبانی میکند، اما پشتیبانی از سایر سطوح استثنا باید ساده باشد.
- این مورد در Android برای [Protected VM Firmware](https://cs.android.com/android/platform/superproject/+/master:packages/modules/Virtualization/pvmfw/) استفاده میشود.
- هیچ راه آسانی برای اجرای این مثال وجود ندارد، زیرا باید روی سختافزار واقعی یا تحت QEMU اجرا شود.