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.