aarch64-paging
Крейт aarch64-paging дозволяє створювати таблиці сторінок відповідно до архітектури системи віртуальної пам’яті AArch64.
use aarch64_paging::{
idmap::IdMap,
paging::{Attributes, MemoryRegion},
};
const ASID: usize = 1;
const ROOT_LEVEL: usize = 1;
// Створити нову таблицю сторінок з відображенням ідентичності.
let mut idmap = IdMap::new(ASID, ROOT_LEVEL);
// Відобразити область пам'яті розміром 2 MiB як доступну тільки для читання.
idmap.map_range(
&MemoryRegion::new(0x80200000, 0x80400000),
Attributes::NORMAL | Attributes::NON_GLOBAL | Attributes::READ_ONLY,
).unwrap();
// Встановити `TTBR0_EL1` для активації таблиці сторінок.
idmap.activate();
- Наразі він підтримує лише EL1, але підтримка інших рівнів винятків має бути легко додана.
- Це використовується в Android для прошивки захищеної віртуальної машини.
- Немає простого способу запустити цей приклад, оскільки він повинен працювати на реальному обладнанні або під керуванням QEMU.