blob: b5cd89adee30a2e42657d29712e0d1fc0d6196a5 [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright (c) 2014, STMicroelectronics International N.V.
* Copyright (c) 2017, Linaro Limited
*/
#include <arm32_macros.S>
#include <asm.S>
#include <kernel/unwind.h>
/* void tlbi_all(void); */
FUNC tlbi_all , :
UNWIND( .fnstart)
dsb ishst /* Sync with table update */
write_tlbiallis /* Invalidate TLBs */
dsb ish /* Sync with tlb invalidation completion */
isb /* Sync execution on tlb update */
bx lr
UNWIND( .fnend)
END_FUNC tlbi_all
/* void tlbi_mva_allasid(vaddr_t mva); */
FUNC tlbi_mva_allasid , :
UNWIND( .fnstart)
dsb ishst /* Sync with table update */
write_tlbimvaais r0 /* Inval TLB by MVA all ASID Inner Sharable */
dsb ish /* Sync with tlb invalidation completion */
isb /* Sync execution on tlb update */
bx lr
UNWIND( .fnend)
END_FUNC tlbi_mva_allasid
/* void tlbi_asid(unsigned long asid); */
FUNC tlbi_asid , :
UNWIND( .fnstart)
dsb ishst /* Sync with table update */
write_tlbiasidis r0 /* Inval unified TLB by ASID Inner Sharable */
orr r0, r0, #1 /* Select the kernel ASID */
write_tlbiasidis r0 /* Inval unified TLB by ASID Inner Sharable */
dsb ish /* Sync with tlb invalidation completion */
isb /* Sync execution on tlb update */
bx lr
UNWIND( .fnend)
END_FUNC tlbi_asid