Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.