1 /* 2 * Copyright 2020, Data61, CSIRO (ABN 41 687 119 230) 3 * 4 * SPDX-License-Identifier: GPL-2.0-only 5 */ 6 7 #pragma once 8 9 #include <mode/machine.h> 10 #include <arch/smp/ipi_inline.h> 11 #if defined(CONFIG_ARM_HYPERVISOR_SUPPORT) && defined(CONFIG_ARCH_AARCH64) 12 #include <armv/tlb.h> 13 #endif 14 invalidateTranslationSingleLocal(vptr_t vptr)15static inline void invalidateTranslationSingleLocal(vptr_t vptr) 16 { 17 #if defined(CONFIG_ARM_HYPERVISOR_SUPPORT) && defined(CONFIG_ARCH_AARCH64) 18 invalidateLocalTLB_IPA_VMID(vptr); 19 #else 20 invalidateLocalTLB_VAASID(vptr); 21 #endif 22 } 23 invalidateTranslationASIDLocal(hw_asid_t hw_asid)24static inline void invalidateTranslationASIDLocal(hw_asid_t hw_asid) 25 { 26 #if defined(CONFIG_ARM_HYPERVISOR_SUPPORT) && defined(CONFIG_ARCH_AARCH64) 27 invalidateLocalTLB_VMID(hw_asid); 28 #else 29 invalidateLocalTLB_ASID(hw_asid); 30 #endif 31 } 32 invalidateTranslationAllLocal(void)33static inline void invalidateTranslationAllLocal(void) 34 { 35 invalidateLocalTLB(); 36 } 37 invalidateTranslationSingle(vptr_t vptr)38static inline void invalidateTranslationSingle(vptr_t vptr) 39 { 40 invalidateTranslationSingleLocal(vptr); 41 SMP_COND_STATEMENT(doRemoteInvalidateTranslationSingle(vptr, MASK(CONFIG_MAX_NUM_NODES))); 42 } 43 invalidateTranslationASID(hw_asid_t hw_asid)44static inline void invalidateTranslationASID(hw_asid_t hw_asid) 45 { 46 invalidateTranslationASIDLocal(hw_asid); 47 SMP_COND_STATEMENT(doRemoteInvalidateTranslationASID(hw_asid, MASK(CONFIG_MAX_NUM_NODES))); 48 } 49 invalidateTranslationAll(void)50static inline void invalidateTranslationAll(void) 51 { 52 invalidateTranslationAllLocal(); 53 SMP_COND_STATEMENT(doRemoteInvalidateTranslationAll(MASK(CONFIG_MAX_NUM_NODES))); 54 } 55 56