/* 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
