aarch64-paging
aarch64-paging クレートを使うと、AArch64 仮想メモリシステムアーキテクチャに従ってページテーブルを作成できます。
// 著作権 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 MiB のメモリ領域を読み取り専用としてマップします。 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 上で実行する必要があるため、これ単体で簡単に実行する方法はありません。