/* SPDX-License-Identifier: BSD-2-Clause */
/*
 * Copyright (c) 2015-2017, Linaro Limited
 */

#include <arm64.h>
#include <asm.S>
#include <util.h>

/* void tlbi_all(void); */
FUNC tlbi_all , :
	dsb	ishst		/* Sync with table update */
	tlbi	vmalle1is	/* All tlb in inner shareable */
	dsb	ish		/* Sync with tlb invalidation completion */
	isb			/* Sync execution on tlb update */
	ret
END_FUNC tlbi_all

/* void tlbi_mva_allasid(vaddr_t mva); */
FUNC tlbi_mva_allasid , :
	lsr	x0, x0, #TLBI_MVA_SHIFT
	dsb	ishst		/* Sync with table update */
	tlbi	vaae1is, x0	/* Invalidate tlb by mva in inner shareable */
	dsb	ish		/* Sync with tlb invalidation completion */
	isb			/* Sync execution on tlb update */
	ret
END_FUNC tlbi_mva_allasid

/* void tlbi_asid(unsigned int asid); */
FUNC tlbi_asid , :
	lsl	x0, x0, #TLBI_ASID_SHIFT
	dsb	ishst		/* Sync with table update */
	tlbi	aside1is, x0	/* Invalidate tlb by asid in inner shareable */
	orr	x0, x0, #BIT(TLBI_ASID_SHIFT) /* Select the kernel ASID */
	tlbi	aside1is, x0	/* Invalidate tlb by asid in inner shareable */
	dsb	ish		/* Sync with tlb invalidation completion */
	isb			/* Sync execution on tlb update */
	ret
END_FUNC tlbi_asid
