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.