maptlbrdb.s
1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/**************************************************************************
* *
* 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)