mirror of
https://github.com/n64decomp/sm64.git
synced 2024-11-16 14:25:05 -05:00
64 lines
1.1 KiB
ArmAsm
64 lines
1.1 KiB
ArmAsm
.set noreorder // don't insert nops after branches
|
|
.set gp=64
|
|
|
|
#include "macros.inc"
|
|
|
|
|
|
.section .text, "ax"
|
|
|
|
// This file is handwritten
|
|
|
|
// void osMapTLB(s32 index, OSPageMask pm, void *vaddr, u32 evenpaddr, u32 oddpaddr, s32 asid);
|
|
glabel osMapTLB
|
|
mfc0 $t0, $10
|
|
mtc0 $a0, $0
|
|
mtc0 $a1, $5
|
|
lw $t1, 0x14($sp) #asid
|
|
beq $t1, -1, .L803214D8
|
|
li $t4, 1
|
|
li $t2, 30
|
|
b .L803214DC
|
|
or $a2, $a2, $t1 #vaddr
|
|
.L803214D8:
|
|
li $t2, 31
|
|
.L803214DC:
|
|
mtc0 $a2, $10 #vaddr
|
|
beq $a3, -1, .L80321500 #even paddr
|
|
nop
|
|
srl $t3, $a3, 6 #evenpaddr
|
|
or $t3, $t3, $t2
|
|
mtc0 $t3, $2
|
|
b .L80321504
|
|
nop
|
|
.L80321500:
|
|
mtc0 $t4, $2
|
|
.L80321504:
|
|
lw $t3, 0x10($sp) #oddpaddr
|
|
beq $t3, -1, .L80321528
|
|
nop
|
|
srl $t3, $t3, 6
|
|
or $t3, $t3, $t2
|
|
mtc0 $t3, $3
|
|
b .L80321540
|
|
nop
|
|
.L80321528:
|
|
mtc0 $t4, $3
|
|
bne $a3, -1, .L80321540 #evenpaddr
|
|
nop
|
|
lui $t3, 0x8000
|
|
mtc0 $t3, $10
|
|
.L80321540:
|
|
nop
|
|
tlbwi
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
mtc0 $t0, $10
|
|
jr $ra
|
|
nop #file gets padded but
|
|
nop
|
|
nop
|
|
nop
|
|
|