aarch64-paging
O crate aarch64-paging
permite criar tabelas de páginas de acordo com a Arquitetura do Sistema de Memória Virtual AArch64.
use aarch64_paging::{ idmap::IdMap, paging::{Attributes, MemoryRegion}, }; const ASID: usize = 1; const ROOT_LEVEL: usize = 1; // Cria uma nova tabela de páginas com mapeamento de identidade. let mut idmap = IdMap::new(ASID, ROOT_LEVEL); // Mapeia uma região de memória de 2 MiB como somente leitura. idmap.map_range( &MemoryRegion::new(0x80200000, 0x80400000), Attributes::NORMAL | Attributes::NON_GLOBAL | Attributes::READ_ONLY, ).unwrap(); // Seta `TTBR0_EL1` para ativar a tabela de páginas. idmap.activate();
- Por enquanto, ele suporta apenas EL1, mas o suporte para outros níveis de exceção deve ser fácil de adicionar.
- Isso é usado no Android para o Firmware VM Protegido.
- Não há uma maneira fácil de executar este exemplo, pois ele precisa ser executado em hardware real ou no QEMU.