1/* 2 * Copyright 2014, General Dynamics C4 Systems 3 * 4 * SPDX-License-Identifier: GPL-2.0-only 5 */ 6 7#pragma once 8 9#include <config.h> 10#include <types.h> 11#include <api/failures.h> 12#include <object/structures.h> 13 14/* PD slot reserved for storing the PD's allocated hardware ASID */ 15#define PD_ASID_SLOT (0xff000000 >> (PT_INDEX_BITS + PAGE_BITS)) 16 17enum pde_pte_tag { 18 ME_PDE, 19 ME_PTE 20}; 21typedef word_t pde_pte_tag_t; 22 23struct createMappingEntries_ret { 24 exception_t status; 25 pde_pte_tag_t tag; 26 void *pde_pte_ptr; 27 unsigned int offset; 28 word_t size; 29}; 30typedef struct createMappingEntries_ret createMappingEntries_ret_t; 31 32struct findPDForASID_ret { 33 exception_t status; 34 pde_t *pd; 35}; 36typedef struct findPDForASID_ret findPDForASID_ret_t; 37 38struct lookupPTSlot_ret { 39 exception_t status; 40 pte_t *ptSlot; 41}; 42typedef struct lookupPTSlot_ret lookupPTSlot_ret_t; 43 44#ifdef CONFIG_ARM_HYPERVISOR_SUPPORT 45hw_asid_t getHWASID(asid_t asid); 46#endif 47void copyGlobalMappings(pde_t *newPD); 48findPDForASID_ret_t findPDForASID(asid_t asid); 49lookupPTSlot_ret_t lookupPTSlot(pde_t *pd, vptr_t vptr); 50pde_t *CONST lookupPDSlot(pde_t *pd, vptr_t vptr); 51void deleteASIDPool(asid_t base, asid_pool_t *pool); 52void deleteASID(asid_t asid, pde_t *pd); 53void unmapPageTable(asid_t asid, vptr_t vaddr, pte_t *pt); 54void unmapPage(vm_page_size_t page_size, asid_t asid, vptr_t vptr, void *pptr); 55hw_asid_t getHWASID(asid_t asid); 56hw_asid_t findFreeHWASID(void); 57void flushPage(vm_page_size_t page_size, pde_t *pd, asid_t asid, word_t vptr); 58void flushTable(pde_t *pd, asid_t asid, word_t vptr, pte_t *pt); 59void flushSpace(asid_t asid); 60void invalidateTLBByASID(asid_t asid); 61 62bool_t CONST isIOSpaceFrameCap(cap_t cap); 63 64/* Reserved memory ranges */ 65static const region_t BOOT_RODATA mode_reserved_region[] = { 66 { 67 (PD_ASID_SLOT + 0) << ARMSectionBits, 68 (PD_ASID_SLOT + 1) << ARMSectionBits 69 } 70}; 71#define MODE_RESERVED ARRAY_SIZE(mode_reserved_region) 72 73