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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
glabel __osProbeTLB
mfc0 $t0, C0_ENTRYHI
andi $t1, $t0, TLBHI_PIDMASK
li $at, TLBHI_VPN2MASK
and $t2, $a0, $at
or $t1, $t1, $t2
mtc0 $t1, C0_ENTRYHI
nop
nop
nop
tlbp
nop
nop
mfc0 $t3, C0_INX
lui $at, %hi(TLBINX_PROBE)
and $t3, $t3, $at
bnez $t3, .L8032A0D8
nop
tlbr
nop
nop
nop
mfc0 $t3, C0_PAGEMASK
addi $t3, $t3, DCACHE_SIZE
srl $t3, $t3, 1
and $t4, $t3, $a0
bnez $t4, .L8032A0A8
addi $t3, $t3, -1
mfc0 $v0, C0_ENTRYLO0
b .L8032A0AC
nop
.L8032A0A8:
mfc0 $v0, C0_ENTRYLO1
.L8032A0AC:
andi $t5, $v0, TLBLO_V
beqz $t5, .L8032A0D8
nop
lui $at, (TLBLO_PFNMASK >> 16) # lui $at, 0x3fff
ori $at, %lo(TLBLO_PFNMASK) # ori $at, $at, 0xffc0
and $v0, $v0, $at
sll $v0, $v0, TLBLO_PFNSHIFT
and $t5, $a0, $t3
add $v0, $v0, $t5
b .L8032A0DC
nop
.L8032A0D8:
li $v0, -1
.L8032A0DC:
mtc0 $t0, C0_ENTRYHI
jr $ra
nop
nop
nop
|