maptlbrdb.s 1.52 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>
#include <rdb.h>

/*
 * void osMapTLBRdb();
 */
LEAF(osMapTLBRdb)
	.set	noreorder
	mfc0	t0,C0_ENTRYHI		# save TLBPID
	li	t1,31			# use TLB entry 31
	mtc0	t1,C0_INX		# set index
	mtc0	zero,C0_PAGEMASK	# set page mask = 0, meaning 4K
	li	t2,TLBLO_UNCACHED|TLBLO_D|TLBLO_V|TLBLO_G # set global bits
	li	t1,RDB_BASE_REG
	mtc0	t1,C0_ENTRYHI		# set virtual address
	li	t1,RDB_BASE_VIRTUAL_ADDR
	srl	t3,t1,12-TLBLO_PFNSHIFT # line up physical page frame number
	or	t3,t2			# or in flag bits
	mtc0	t3,C0_ENTRYLO0		# set even physical address & flags
	li	t1,TLBLO_G		# set invalid entrylo bits 
	mtc0	t1,C0_ENTRYLO1		# invalidate odd page mapping
	nop                             # 7-5-1 = 1 nop for fall through,
	tlbwi            		# set tlb entry
	nop				# 8-3-1 = 4 nop
	nop				
	nop
	nop
	mtc0	t0,C0_ENTRYHI		# restore saved TLBPID
	j	ra
	nop
	.set	reorder
END(osMapTLBRdb)