unmaptlball.s 1.32 KB
/**************************************************************************
 *									  *
 *		 Copyright (C) 1994, Silicon Graphics, Inc.		  *
 *									  *
 *  These coded instructions, statements, and computer programs  contain  *
 *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *
 *  are protected by Federal copyright law.  They  may  not be disclosed  *
 *  to  third  parties  or copied or duplicated in any form, in whole or  *
 *  in part, without the prior written consent of Silicon Graphics, Inc.  *
 *									  *
 **************************************************************************/

#include <asm.h>
#include <regdef.h>
#include <R4300.h>

/*
 * osUnmapTLBAll(void)
 */
	.set	noreorder

LEAF(osUnmapTLBAll)
	mfc0	t0,C0_ENTRYHI		# save TLBPID
	li	t1,NTLBENTRIES - 1	# initialize counter
	li	t2,K0BASE		# set virtual address to unmapped
	mtc0	t2,C0_ENTRYHI		#  (necessary on R4300)
	mtc0	zero,C0_ENTRYLO0	# make even page invalid
	mtc0	zero,C0_ENTRYLO1	# make odd page invalid
1:
	mtc0	t1,C0_INX		# set TLB index
	nop				# 7-5-1 = 1 nop
	tlbwi              		# invalidate
	nop                             # 8-3-1 = 4 nop
	nop				# 1 already in delay slot
	sub	t1,1			# decrement counter
	bge	t1,zero,1b		# branch if not yet done
	nop
	mtc0	t0,C0_ENTRYHI		# restore saved TLBPID
	j	ra
	nop
END(osUnmapTLBAll)