aarch64-paging
Крейт aarch64-paging позволяет создавать таблицы страниц в соответствии с AArch64 Virtual Memory System Architecture.
// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0
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 МиБ как только для чтения.
idmap.map_range(
&MemoryRegion::new(0x80200000, 0x80400000),
Attributes::NORMAL | Attributes::NON_GLOBAL | Attributes::READ_ONLY,
).unwrap();
// Устанавливаем `TTBR0_EL1`, чтобы активировать таблицу страниц.
idmap.activate();
- Это используется в Android для Protected VM Firmware.
- Нет простого способа запустить этот пример отдельно, так как он должен работать на реальном оборудовании или под QEMU.