You've already forked ultrasm64-2
mirror of
https://github.com/HackerN64/ultrasm64-2.git
synced 2026-01-21 10:38:08 -08:00
Refresh 16
This commit is contained in:
@@ -1,18 +1,40 @@
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
#include <PR/R4300.h>
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
|
||||
glabel __osDisableInt
|
||||
mfc0 $t0, $12
|
||||
and $t1, $t0, -2
|
||||
mtc0 $t1, $12
|
||||
andi $v0, $t0, 1
|
||||
nop
|
||||
jr $ra
|
||||
nop
|
||||
#ifdef VERSION_CN
|
||||
la $t2, __OSGlobalIntMask
|
||||
lw $t3, ($t2)
|
||||
andi $t3, $t3, SR_IMASK
|
||||
#endif
|
||||
mfc0 $t0, C0_SR
|
||||
and $t1, $t0, ~SR_IE
|
||||
mtc0 $t1, C0_SR
|
||||
andi $v0, $t0, SR_IE
|
||||
#ifdef VERSION_CN
|
||||
lw $t0, ($t2)
|
||||
andi $t0, $t0, SR_IMASK
|
||||
beq $t0, $t3, .Lret
|
||||
lui $t2, %hi(__osRunningThread)
|
||||
addiu $t2, %lo(__osRunningThread)
|
||||
lw $t1, 0x118($t2)
|
||||
andi $t2, $t1, SR_IMASK
|
||||
and $t2, $t2, $t0
|
||||
and $t1, $t1, ~SR_IMASK
|
||||
or $t1, $t1, $t2
|
||||
and $t1, $t1, ~SR_IE
|
||||
mtc0 $t1, $12
|
||||
nop
|
||||
#endif
|
||||
nop
|
||||
.Lret:
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,4 @@
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
@@ -10,7 +9,7 @@
|
||||
glabel __osProbeTLB
|
||||
mfc0 $t0, $10
|
||||
andi $t1, $t0, 0xff
|
||||
li $at, -8192
|
||||
li $at, 0xFFFFE000
|
||||
and $t2, $a0, $at
|
||||
or $t1, $t1, $t2
|
||||
mtc0 $t1, $10
|
||||
@@ -58,7 +57,3 @@ glabel __osProbeTLB
|
||||
mtc0 $t0, $10
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
nop
|
||||
nop
|
||||
|
||||
|
||||
@@ -1,19 +1,16 @@
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
#include <PR/R4300.h>
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
glabel __osRestoreInt
|
||||
mfc0 $t0, $12
|
||||
mfc0 $t0, C0_SR
|
||||
or $t0, $t0, $a0
|
||||
mtc0 $t0, $12
|
||||
mtc0 $t0, C0_SR
|
||||
nop
|
||||
nop
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
nop
|
||||
|
||||
|
||||
@@ -1,15 +1,65 @@
|
||||
.set noat
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
#include <PR/R4300.h>
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
#ifdef VERSION_CN
|
||||
|
||||
glabel __osSetCompare
|
||||
mtc0 $a0, $11
|
||||
addiu $sp, $sp, -0x38
|
||||
sd $ra, 0x30($sp)
|
||||
sd $fp, 0x28($sp)
|
||||
move $fp, $sp
|
||||
sw $a0, 0x3c($fp)
|
||||
lw $v0, 0x3c($fp)
|
||||
beqz $v0, .L8030A25C
|
||||
nop
|
||||
jal __osDisableInt
|
||||
nop
|
||||
sw $v0, 0x20($fp)
|
||||
lw $v0, 0x3c($fp)
|
||||
lui $v1, %hi(sLastHighestCount2) # $v1, 0x8032
|
||||
lw $v1, %lo(sLastHighestCount2)($v1)
|
||||
sltu $v0, $v0, $v1
|
||||
lui $v1, %hi(sNumCountOverflows2) # $v1, 0x8032
|
||||
lw $v1, %lo(sNumCountOverflows2)($v1)
|
||||
addu $v0, $v0, $v1
|
||||
sw $v0, 0x24($fp)
|
||||
lwu $v0, 0x24($fp)
|
||||
dsll32 $v1, $v0, 0
|
||||
lwu $a0, 0x3c($fp)
|
||||
or $v0, $v1, $a0
|
||||
move $a0, $v0
|
||||
dsll $v1, $a0, 1
|
||||
daddu $v1, $v1, $v0
|
||||
dsll $a0, $v1, 6
|
||||
li $at, 125
|
||||
ddivu $zero, $a0, $at
|
||||
mflo $v0
|
||||
dsll32 $v0, $v0, 0
|
||||
dsra32 $v0, $v0, 0
|
||||
sw $v0, 0x3c($fp)
|
||||
jal __osRestoreInt
|
||||
lw $a0, 0x20($fp)
|
||||
.L8030A25C:
|
||||
lw $a1, 0x3c($fp)
|
||||
mtc0 $a1, C0_COMPARE
|
||||
move $sp, $fp
|
||||
ld $ra, 0x30($sp)
|
||||
ld $fp, 0x28($sp)
|
||||
jr $ra
|
||||
addiu $sp, $sp, 0x38
|
||||
|
||||
#else
|
||||
|
||||
glabel __osSetCompare
|
||||
mtc0 $a0, C0_COMPARE
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
nop
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
13
lib/asm/__osSetWatchLo.s
Normal file
13
lib/asm/__osSetWatchLo.s
Normal file
@@ -0,0 +1,13 @@
|
||||
.set noreorder // don't insert nops after branches
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
glabel __osSetWatchLo
|
||||
mtc0 $a0, $18
|
||||
nop
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
.set noat
|
||||
.set noreorder // don't insert nops after branches
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
208
lib/asm/bcopy.s
208
lib/asm/bcopy.s
@@ -1,27 +1,45 @@
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
//TODO There seem to be patterns in these iQue diffs. Can we figure out what's causing them? Could this have been written in C?
|
||||
//also ifdef hell lol
|
||||
|
||||
glabel bcopy
|
||||
beqz $a2, .L80323A4C
|
||||
move $a3, $a1
|
||||
#ifdef VERSION_CN
|
||||
beq $a0, $a1, .L80323A4C
|
||||
nop
|
||||
slt $at, $a1, $a0
|
||||
bnez $at, .L80323A14
|
||||
nop
|
||||
add $v0, $a0, $a2
|
||||
slt $at, $a1, $v0
|
||||
beqz $at, .L80323A14
|
||||
nop
|
||||
b .L80323B78
|
||||
nop
|
||||
.L80323A14:
|
||||
slti $at, $a2, 0x10
|
||||
#else
|
||||
beq $a0, $a1, .L80323A4C
|
||||
slt $at, $a1, $a0
|
||||
bnezl $at, .L80323A14
|
||||
slti $at, $a2, 0x10
|
||||
add $v0, $a0, $a2
|
||||
slt $at, $a1, $v0
|
||||
beql $at, $zero, .L80323A14
|
||||
beqzl $at, .L80323A14
|
||||
slti $at, $a2, 0x10
|
||||
b .L80323B78
|
||||
slti $at, $a2, 0x10
|
||||
slti $at, $a2, 0x10
|
||||
.L80323A14:
|
||||
#endif
|
||||
bnez $at, .L80323A2C
|
||||
nop
|
||||
andi $v0, $a0, 3
|
||||
@@ -35,14 +53,38 @@ glabel bcopy
|
||||
.L80323A38:
|
||||
lb $v0, ($a0)
|
||||
addiu $a0, $a0, 1
|
||||
#ifdef VERSION_CN
|
||||
sb $v0, ($a1)
|
||||
bne $a0, $v1, .L80323A38
|
||||
addiu $a1, $a1, 1
|
||||
#else
|
||||
addiu $a1, $a1, 1
|
||||
bne $a0, $v1, .L80323A38
|
||||
sb $v0, -1($a1)
|
||||
#endif
|
||||
.L80323A4C:
|
||||
jr $ra
|
||||
move $v0, $a3
|
||||
|
||||
.L80323A54:
|
||||
#ifdef VERSION_CN
|
||||
beqz $v0, .L80323AB8
|
||||
nop
|
||||
li $at, 1
|
||||
beq $v0, $at, .L80323A9C
|
||||
nop
|
||||
li $at, 2
|
||||
beq $v0, $at, .L80323A88
|
||||
nop
|
||||
lb $v0, ($a0)
|
||||
addiu $a0, $a0, 1
|
||||
sb $v0, ($a1)
|
||||
addiu $a1, $a1, 1
|
||||
b .L80323AB8
|
||||
addiu $a2, $a2, -1
|
||||
.L80323A88:
|
||||
lh $v0, ($a0)
|
||||
#else
|
||||
beqz $v0, .L80323AB8
|
||||
li $at, 1
|
||||
beq $v0, $at, .L80323A9C
|
||||
@@ -57,23 +99,42 @@ glabel bcopy
|
||||
sb $v0, -1($a1)
|
||||
lh $v0, ($a0)
|
||||
.L80323A88:
|
||||
#endif
|
||||
addiu $a0, $a0, 2
|
||||
#ifdef VERSION_CN
|
||||
sh $v0, ($a1)
|
||||
addiu $a1, $a1, 2
|
||||
b .L80323AB8
|
||||
addiu $a2, $a2, -2
|
||||
#else
|
||||
addiu $a1, $a1, 2
|
||||
addiu $a2, $a2, -2
|
||||
b .L80323AB8
|
||||
sh $v0, -2($a1)
|
||||
#endif
|
||||
.L80323A9C:
|
||||
lb $v0, ($a0)
|
||||
lh $v1, 1($a0)
|
||||
addiu $a0, $a0, 3
|
||||
#ifdef VERSION_CN
|
||||
sb $v0, ($a1)
|
||||
sh $v1, 1($a1)
|
||||
#endif
|
||||
addiu $a1, $a1, 3
|
||||
addiu $a2, $a2, -3
|
||||
#ifndef VERSION_CN
|
||||
sb $v0, -3($a1)
|
||||
sh $v1, -2($a1)
|
||||
#endif
|
||||
.L80323AB8:
|
||||
slti $at, $a2, 0x20
|
||||
#ifdef VERSION_CN
|
||||
bnez $at, .L80323B14
|
||||
nop
|
||||
#else
|
||||
bnezl $at, .L80323B18
|
||||
slti $at, $a2, 0x10
|
||||
#endif
|
||||
lw $v0, ($a0)
|
||||
lw $v1, 4($a0)
|
||||
lw $t0, 8($a0)
|
||||
@@ -83,7 +144,18 @@ glabel bcopy
|
||||
lw $t4, 0x18($a0)
|
||||
lw $t5, 0x1c($a0)
|
||||
addiu $a0, $a0, 0x20
|
||||
#ifdef VERSION_CN
|
||||
sw $v0, ($a1)
|
||||
sw $v1, 4($a1)
|
||||
sw $t0, 8($a1)
|
||||
sw $t1, 0xc($a1)
|
||||
sw $t2, 0x10($a1)
|
||||
sw $t3, 0x14($a1)
|
||||
sw $t4, 0x18($a1)
|
||||
sw $t5, 0x1c($a1)
|
||||
#endif
|
||||
addiu $a1, $a1, 0x20
|
||||
#ifndef VERSION_CN
|
||||
addiu $a2, $a2, -0x20
|
||||
sw $v0, -0x20($a1)
|
||||
sw $v1, -0x1c($a1)
|
||||
@@ -92,25 +164,47 @@ glabel bcopy
|
||||
sw $t2, -0x10($a1)
|
||||
sw $t3, -0xc($a1)
|
||||
sw $t4, -8($a1)
|
||||
#endif
|
||||
b .L80323AB8
|
||||
#ifdef VERSION_CN
|
||||
addiu $a2, $a2, -0x20
|
||||
#else
|
||||
sw $t5, -4($a1)
|
||||
#endif
|
||||
.L80323B14:
|
||||
slti $at, $a2, 0x10
|
||||
.L80323B18:
|
||||
#ifdef VERSION_CN
|
||||
bnez $at, .L80323B50
|
||||
nop
|
||||
#else
|
||||
bnezl $at, .L80323B54
|
||||
slti $at, $a2, 4
|
||||
#endif
|
||||
lw $v0, ($a0)
|
||||
lw $v1, 4($a0)
|
||||
lw $t0, 8($a0)
|
||||
lw $t1, 0xc($a0)
|
||||
addiu $a0, $a0, 0x10
|
||||
#ifdef VERSION_CN
|
||||
sw $v0, ($a1)
|
||||
sw $v1, 4($a1)
|
||||
sw $t0, 8($a1)
|
||||
sw $t1, 0xc($a1)
|
||||
#endif
|
||||
addiu $a1, $a1, 0x10
|
||||
#ifndef VERSION_CN
|
||||
addiu $a2, $a2, -0x10
|
||||
sw $v0, -0x10($a1)
|
||||
sw $v1, -0xc($a1)
|
||||
sw $t0, -8($a1)
|
||||
#endif
|
||||
b .L80323B14
|
||||
#ifdef VERSION_CN
|
||||
addiu $a2, $a2, -0x10
|
||||
#else
|
||||
sw $t1, -4($a1)
|
||||
#endif
|
||||
.L80323B50:
|
||||
slti $at, $a2, 4
|
||||
.L80323B54:
|
||||
@@ -118,15 +212,32 @@ glabel bcopy
|
||||
nop
|
||||
lw $v0, ($a0)
|
||||
addiu $a0, $a0, 4
|
||||
#ifdef VERSION_CN
|
||||
sw $v0, ($a1)
|
||||
#endif
|
||||
addiu $a1, $a1, 4
|
||||
#ifndef VERSION_CN
|
||||
addiu $a2, $a2, -4
|
||||
#endif
|
||||
b .L80323B50
|
||||
#ifdef VERSION_CN
|
||||
addiu $a2, $a2, -4
|
||||
#else
|
||||
sw $v0, -4($a1)
|
||||
slti $at, $a2, 0x10
|
||||
#endif
|
||||
.L80323B78:
|
||||
add $a0, $a0, $a2
|
||||
#ifdef VERSION_CN
|
||||
add $a1, $a1, $a2
|
||||
slti $at, $a2, 0x10
|
||||
#endif
|
||||
bnez $at, .L80323B94
|
||||
#ifdef VERSION_CN
|
||||
nop
|
||||
#else
|
||||
add $a1, $a1, $a2
|
||||
#endif
|
||||
andi $v0, $a0, 3
|
||||
andi $v1, $a1, 3
|
||||
beq $v0, $v1, .L80323BC4
|
||||
@@ -140,44 +251,94 @@ glabel bcopy
|
||||
.L80323BA8:
|
||||
lb $v0, ($a0)
|
||||
addiu $a0, $a0, -1
|
||||
#ifdef VERSION_CN
|
||||
sb $v0, 0($a1)
|
||||
#else
|
||||
addiu $a1, $a1, -1
|
||||
#endif
|
||||
bne $a0, $v1, .L80323BA8
|
||||
#ifdef VERSION_CN
|
||||
addiu $a1, $a1, -1
|
||||
#else
|
||||
sb $v0, 1($a1)
|
||||
#endif
|
||||
jr $ra
|
||||
move $v0, $a3
|
||||
|
||||
.L80323BC4:
|
||||
beqz $v0, .L80323C28
|
||||
#ifdef VERSION_CN
|
||||
nop
|
||||
#endif
|
||||
li $at, 3
|
||||
beq $v0, $at, .L80323C0C
|
||||
#ifdef VERSION_CN
|
||||
nop
|
||||
#endif
|
||||
li $at, 2
|
||||
#ifdef VERSION_CN
|
||||
beq $v0, $at, .L80323BF4
|
||||
nop
|
||||
#else
|
||||
beql $v0, $at, .L80323BF8
|
||||
lh $v0, -2($a0)
|
||||
#endif
|
||||
lb $v0, -1($a0)
|
||||
addiu $a0, $a0, -1
|
||||
#ifdef VERSION_CN
|
||||
sb $v0, -1($a1)
|
||||
#endif
|
||||
addiu $a1, $a1, -1
|
||||
#ifndef VERSION_CN
|
||||
addiu $a2, $a2, -1
|
||||
#endif
|
||||
b .L80323C28
|
||||
#ifdef VERSION_CN
|
||||
addiu $a2, $a2, -1
|
||||
#else
|
||||
sb $v0, ($a1)
|
||||
#endif
|
||||
.L80323BF4:
|
||||
lh $v0, -2($a0)
|
||||
.L80323BF8:
|
||||
addiu $a0, $a0, -2
|
||||
#ifdef VERSION_CN
|
||||
sh $v0, -2($a1)
|
||||
#endif
|
||||
addiu $a1, $a1, -2
|
||||
#ifndef VERSION_CN
|
||||
addiu $a2, $a2, -2
|
||||
#endif
|
||||
b .L80323C28
|
||||
#ifdef VERSION_CN
|
||||
addiu $a2, $a2, -2
|
||||
#else
|
||||
sh $v0, ($a1)
|
||||
#endif
|
||||
.L80323C0C:
|
||||
lb $v0, -1($a0)
|
||||
lh $v1, -3($a0)
|
||||
addiu $a0, $a0, -3
|
||||
#ifdef VERSION_CN
|
||||
sb $v0, -1($a1)
|
||||
sh $v1, -3($a1)
|
||||
addiu $a1, $a1, -3
|
||||
addiu $a2, $a2, -3
|
||||
#else
|
||||
addiu $a1, $a1, -3
|
||||
addiu $a2, $a2, -3
|
||||
sb $v0, 2($a1)
|
||||
sh $v1, ($a1)
|
||||
#endif
|
||||
.L80323C28:
|
||||
slti $at, $a2, 0x20
|
||||
#ifdef VERSION_CN
|
||||
bnez $at, .L80323C84
|
||||
nop
|
||||
#else
|
||||
bnezl $at, .L80323C88
|
||||
slti $at, $a2, 0x10
|
||||
#endif
|
||||
lw $v0, -4($a0)
|
||||
lw $v1, -8($a0)
|
||||
lw $t0, -0xc($a0)
|
||||
@@ -187,6 +348,17 @@ glabel bcopy
|
||||
lw $t4, -0x1c($a0)
|
||||
lw $t5, -0x20($a0)
|
||||
addiu $a0, $a0, -0x20
|
||||
#ifdef VERSION_CN
|
||||
sw $v0, -4($a1)
|
||||
sw $v1, -8($a1)
|
||||
sw $t0, -0xc($a1)
|
||||
sw $t1, -0x10($a1)
|
||||
sw $t2, -0x14($a1)
|
||||
sw $t3, -0x18($a1)
|
||||
sw $t4, -0x1c($a1)
|
||||
sw $t5, -0x20($a1)
|
||||
addiu $a1, $a1, -0x20
|
||||
#else
|
||||
addiu $a1, $a1, -0x20
|
||||
addiu $a2, $a2, -0x20
|
||||
sw $v0, 0x1c($a1)
|
||||
@@ -196,25 +368,47 @@ glabel bcopy
|
||||
sw $t2, 0xc($a1)
|
||||
sw $t3, 8($a1)
|
||||
sw $t4, 4($a1)
|
||||
#endif
|
||||
b .L80323C28
|
||||
#ifdef VERSION_CN
|
||||
addiu $a2, $a2, -0x20
|
||||
#else
|
||||
sw $t5, ($a1)
|
||||
#endif
|
||||
.L80323C84:
|
||||
slti $at, $a2, 0x10
|
||||
.L80323C88:
|
||||
#ifdef VERSION_CN
|
||||
bnez $at, .L80323CC0
|
||||
nop
|
||||
#else
|
||||
bnezl $at, .L80323CC4
|
||||
slti $at, $a2, 4
|
||||
#endif
|
||||
lw $v0, -4($a0)
|
||||
lw $v1, -8($a0)
|
||||
lw $t0, -0xc($a0)
|
||||
lw $t1, -0x10($a0)
|
||||
addiu $a0, $a0, -0x10
|
||||
#ifdef VERSION_CN
|
||||
sw $v0, -4($a1)
|
||||
sw $v1, -8($a1)
|
||||
sw $t0, -0xc($a1)
|
||||
sw $t1, -0x10($a1)
|
||||
addiu $a1, $a1, -0x10
|
||||
#else
|
||||
addiu $a1, $a1, -0x10
|
||||
addiu $a2, $a2, -0x10
|
||||
sw $v0, 0xc($a1)
|
||||
sw $v1, 8($a1)
|
||||
sw $t0, 4($a1)
|
||||
#endif
|
||||
b .L80323C84
|
||||
#ifdef VERSION_CN
|
||||
addiu $a2, $a2, -0x10
|
||||
#else
|
||||
sw $t1, ($a1)
|
||||
#endif
|
||||
.L80323CC0:
|
||||
slti $at, $a2, 4
|
||||
.L80323CC4:
|
||||
@@ -222,11 +416,19 @@ glabel bcopy
|
||||
nop
|
||||
lw $v0, -4($a0)
|
||||
addiu $a0, $a0, -4
|
||||
#ifdef VERSION_CN
|
||||
sw $v0, -4($a1)
|
||||
#endif
|
||||
addiu $a1, $a1, -4
|
||||
#ifndef VERSION_CN
|
||||
addiu $a2, $a2, -4
|
||||
#endif
|
||||
b .L80323CC0
|
||||
#ifdef VERSION_CN
|
||||
addiu $a2, $a2, -4
|
||||
#else
|
||||
sw $v0, ($a1)
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,13 +1,61 @@
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
// this file is probably handwritten
|
||||
|
||||
//TODO There seem to be patterns in these iQue diffs. Can we figure out what's causing them? Could this have been written in C? See also bcopy.s.
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
glabel bzero
|
||||
|
||||
#ifdef VERSION_CN
|
||||
negu $v1, $a0
|
||||
blt $a1, 0xc, .L80303790
|
||||
nop
|
||||
andi $v1, $v1, 3
|
||||
beqz $v1, .L80303734
|
||||
subu $a1, $a1, $v1
|
||||
swl $zero, ($a0)
|
||||
addu $a0, $a0, $v1
|
||||
.L80303734:
|
||||
and $a3, $a1, -32
|
||||
beqz $a3, .L80303770
|
||||
subu $a1, $a1, $a3
|
||||
addu $a3, $a3, $a0
|
||||
.L80303748:
|
||||
sw $zero, ($a0)
|
||||
sw $zero, 4($a0)
|
||||
sw $zero, 8($a0)
|
||||
sw $zero, 0xc($a0)
|
||||
addiu $a0, $a0, 0x20
|
||||
sw $zero, -0x10($a0)
|
||||
sw $zero, -0xc($a0)
|
||||
sw $zero, -8($a0)
|
||||
bne $a0, $a3, .L80303748
|
||||
sw $zero, -4($a0)
|
||||
.L80303770:
|
||||
and $a3, $a1, -4
|
||||
beqz $a3, .L80303790
|
||||
subu $a1, $a1, $a3
|
||||
addu $a3, $a3, $a0
|
||||
.L80303784:
|
||||
addiu $a0, $a0, 4
|
||||
bne $a0, $a3, .L80303784
|
||||
sw $zero, -4($a0)
|
||||
.L80303790:
|
||||
blez $a1, .L803037A8
|
||||
nop
|
||||
addu $a1, $a1, $a0
|
||||
.L8030379C:
|
||||
addiu $a0, $a0, 1
|
||||
bne $a0, $a1, .L8030379C
|
||||
sb $zero, -1($a0)
|
||||
.L803037A8:
|
||||
jr $ra
|
||||
nop
|
||||
#else
|
||||
blt $a1, 0xc, .L803236BC
|
||||
negu $v1, $a0
|
||||
andi $v1, $v1, 3
|
||||
@@ -50,4 +98,5 @@ glabel bzero
|
||||
sb $zero, -1($a0)
|
||||
.L803236D4:
|
||||
jr $ra
|
||||
#endif
|
||||
|
||||
|
||||
46
lib/asm/guMtxF2L.s
Normal file
46
lib/asm/guMtxF2L.s
Normal file
@@ -0,0 +1,46 @@
|
||||
.set noat
|
||||
.set noreorder // don't insert nops after branches
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
#ifdef VERSION_CN
|
||||
|
||||
.balign 32
|
||||
|
||||
glabel guMtxF2L
|
||||
li $at, 0x47800000 // 65536.000000
|
||||
mtc1 $at, $f0
|
||||
lui $t9, 0xffff
|
||||
addiu $t8, $a1, 0x20
|
||||
.L80306C70:
|
||||
lwc1 $f4, ($a0)
|
||||
mul.s $f6, $f4, $f0
|
||||
trunc.w.s $f8, $f6
|
||||
lwc1 $f10, 4($a0)
|
||||
mul.s $f16, $f10, $f0
|
||||
trunc.w.s $f18, $f16
|
||||
mfc1 $t0, $f8
|
||||
mfc1 $t1, $f18
|
||||
and $t2, $t0, $t9
|
||||
srl $t3, $t1, 0x10
|
||||
or $t4, $t2, $t3
|
||||
sw $t4, ($a1)
|
||||
sll $t5, $t0, 0x10
|
||||
andi $t6, $t1, 0xffff
|
||||
or $t7, $t5, $t6
|
||||
sw $t7, 0x20($a1)
|
||||
addiu $a1, $a1, 4
|
||||
bne $a1, $t8, .L80306C70
|
||||
addiu $a0, $a0, 8
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
#endif
|
||||
32
lib/asm/guMtxIdentF.s
Normal file
32
lib/asm/guMtxIdentF.s
Normal file
@@ -0,0 +1,32 @@
|
||||
.set noreorder // don't insert nops after branches
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
#ifdef VERSION_CN
|
||||
|
||||
.balign 32
|
||||
|
||||
glabel guMtxIdentF
|
||||
lui $t0, 0x3f80
|
||||
sw $t0, ($a0)
|
||||
sw $zero, 4($a0)
|
||||
sw $zero, 8($a0)
|
||||
sw $zero, 0xc($a0)
|
||||
sw $zero, 0x10($a0)
|
||||
sw $t0, 0x14($a0)
|
||||
sw $zero, 0x18($a0)
|
||||
sw $zero, 0x1c($a0)
|
||||
sw $zero, 0x20($a0)
|
||||
sw $zero, 0x24($a0)
|
||||
sw $t0, 0x28($a0)
|
||||
sw $zero, 0x2c($a0)
|
||||
sw $zero, 0x30($a0)
|
||||
sw $zero, 0x34($a0)
|
||||
sw $zero, 0x38($a0)
|
||||
jr $ra
|
||||
sw $t0, 0x3c($a0)
|
||||
|
||||
#endif
|
||||
33
lib/asm/guNormalize.s
Normal file
33
lib/asm/guNormalize.s
Normal file
@@ -0,0 +1,33 @@
|
||||
.set noreorder // don't insert nops after branches
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
#ifdef VERSION_CN
|
||||
|
||||
glabel guNormalize
|
||||
lwc1 $f4, ($a0)
|
||||
lwc1 $f6, ($a1)
|
||||
lwc1 $f8, ($a2)
|
||||
mul.s $f10, $f4, $f4
|
||||
li $t0, 0x3F800000 # 1.000000
|
||||
mul.s $f16, $f6, $f6
|
||||
add.s $f18, $f10, $f16
|
||||
mul.s $f16, $f8, $f8
|
||||
add.s $f10, $f16, $f18
|
||||
mtc1 $t0, $f18
|
||||
sqrt.s $f16, $f10
|
||||
div.s $f10, $f18, $f16
|
||||
mul.s $f16, $f4, $f10
|
||||
nop
|
||||
mul.s $f18, $f6, $f10
|
||||
nop
|
||||
mul.s $f4, $f8, $f10
|
||||
swc1 $f16, ($a0)
|
||||
swc1 $f18, ($a1)
|
||||
jr $ra
|
||||
swc1 $f4, ($a2)
|
||||
|
||||
#endif
|
||||
55
lib/asm/guScale.s
Normal file
55
lib/asm/guScale.s
Normal file
@@ -0,0 +1,55 @@
|
||||
.set noat
|
||||
.set noreorder // don't insert nops after branches
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
#ifdef VERSION_CN
|
||||
|
||||
.balign 32
|
||||
|
||||
glabel guScale
|
||||
li $at, 0x47800000 // 65536.000000
|
||||
mtc1 $at, $f4
|
||||
mtc1 $a1, $f6
|
||||
mul.s $f8, $f6, $f4
|
||||
trunc.w.s $f10, $f8
|
||||
mfc1 $t1, $f10
|
||||
srl $t2, $t1, 0x10
|
||||
sll $t0, $t2, 0x10
|
||||
sw $t0, ($a0)
|
||||
sll $t2, $t1, 0x10
|
||||
sw $t2, 0x20($a0)
|
||||
mtc1 $a2, $f6
|
||||
mul.s $f8, $f6, $f4
|
||||
trunc.w.s $f10, $f8
|
||||
mfc1 $t1, $f10
|
||||
srl $t0, $t1, 0x10
|
||||
sw $t0, 8($a0)
|
||||
andi $t2, $t1, 0xffff
|
||||
sw $t2, 0x28($a0)
|
||||
mtc1 $a3, $f6
|
||||
mul.s $f8, $f6, $f4
|
||||
trunc.w.s $f10, $f8
|
||||
mfc1 $t1, $f10
|
||||
srl $t2, $t1, 0x10
|
||||
sll $t0, $t2, 0x10
|
||||
sw $t0, 0x14($a0)
|
||||
sll $t2, $t1, 0x10
|
||||
sw $t2, 0x34($a0)
|
||||
li $t0, 1
|
||||
sw $t0, 0x1c($a0)
|
||||
sw $zero, 4($a0)
|
||||
sw $zero, 0xc($a0)
|
||||
sw $zero, 0x10($a0)
|
||||
sw $zero, 0x18($a0)
|
||||
sw $zero, 0x24($a0)
|
||||
sw $zero, 0x2c($a0)
|
||||
sw $zero, 0x30($a0)
|
||||
sw $zero, 0x38($a0)
|
||||
jr $ra
|
||||
sw $zero, 0x3c($a0)
|
||||
|
||||
#endif
|
||||
65
lib/asm/guTranslate.s
Normal file
65
lib/asm/guTranslate.s
Normal file
@@ -0,0 +1,65 @@
|
||||
.set noat
|
||||
.set noreorder // don't insert nops after branches
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
#ifdef VERSION_CN
|
||||
|
||||
.balign 16
|
||||
|
||||
glabel guTranslate
|
||||
li $at, 0x47800000 // 65536.000000
|
||||
mtc1 $at, $f4
|
||||
mtc1 $a1, $f6
|
||||
mul.s $f8, $f6, $f4
|
||||
trunc.w.s $f10, $f8
|
||||
mfc1 $t1, $f10
|
||||
mtc1 $a2, $f6
|
||||
mul.s $f8, $f6, $f4
|
||||
trunc.w.s $f10, $f8
|
||||
mfc1 $t3, $f10
|
||||
srl $t2, $t1, 0x10
|
||||
sll $t0, $t2, 0x10
|
||||
srl $t2, $t3, 0x10
|
||||
or $t0, $t0, $t2
|
||||
sw $t0, 0x18($a0)
|
||||
sll $t0, $t1, 0x10
|
||||
sll $t2, $t3, 0x10
|
||||
srl $t2, $t2, 0x10
|
||||
or $t0, $t0, $t2
|
||||
sw $t0, 0x38($a0)
|
||||
mtc1 $a3, $f6
|
||||
mul.s $f8, $f6, $f4
|
||||
trunc.w.s $f10, $f8
|
||||
mfc1 $t1, $f10
|
||||
srl $t2, $t1, 0x10
|
||||
sll $t0, $t2, 0x10
|
||||
addiu $t0, $t0, 1
|
||||
sw $t0, 0x1c($a0)
|
||||
sll $t2, $t1, 0x10
|
||||
sw $t2, 0x3c($a0)
|
||||
sw $zero, ($a0)
|
||||
sw $zero, 4($a0)
|
||||
sw $zero, 8($a0)
|
||||
sw $zero, 0xc($a0)
|
||||
sw $zero, 0x10($a0)
|
||||
sw $zero, 0x14($a0)
|
||||
sw $zero, 0x20($a0)
|
||||
sw $zero, 0x24($a0)
|
||||
sw $zero, 0x28($a0)
|
||||
sw $zero, 0x2c($a0)
|
||||
sw $zero, 0x30($a0)
|
||||
sw $zero, 0x34($a0)
|
||||
lui $t0, 1
|
||||
ori $t0, $t0, 0
|
||||
sw $t0, ($a0)
|
||||
sw $t0, 0x14($a0)
|
||||
lui $t0, (0x00000001 >> 16) # lui $t0, 0
|
||||
ori $t0, (0x00000001 & 0xFFFF) # ori $t0, $t0, 1
|
||||
jr $ra
|
||||
sw $t0, 8($a0)
|
||||
|
||||
#endif
|
||||
42
lib/asm/iQueKernelCalls.s
Normal file
42
lib/asm/iQueKernelCalls.s
Normal file
@@ -0,0 +1,42 @@
|
||||
.set noat
|
||||
.set noreorder // don't insert nops after branches
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
.macro def label, num
|
||||
glabel \label
|
||||
li $v0, \num
|
||||
lui $t0, (0xA4300014 >> 16)
|
||||
ori $t0, (0xA4300014 & 0xFFFF)
|
||||
lw $t1, ($t0) // traps the iQue OS and performs the function
|
||||
nop
|
||||
jr $ra
|
||||
nop
|
||||
.endm
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
def skGetId, 0x0
|
||||
def skLaunchSetup, 0x1
|
||||
def skLaunch, 0x2
|
||||
def skRecryptListValid, 0x3
|
||||
def skRecryptBegin, 0x4
|
||||
def skRecryptData, 0x5
|
||||
def skRecryptComputeState, 0x6
|
||||
def skRecryptEnd, 0x7
|
||||
def skSignHash, 0x8
|
||||
def skVerifyHash, 0x9
|
||||
def skGetConsumption, 0xa
|
||||
def skAdvanceTicketWindow, 0xb
|
||||
def skSetLimit, 0xc
|
||||
def skExit, 0xd
|
||||
def skKeepAlive, 0xe
|
||||
|
||||
// developer calls
|
||||
def sk0f, 0x0f
|
||||
def sk10, 0x10
|
||||
def sk11, 0x11
|
||||
def sk12, 0x12
|
||||
def sk13, 0x13
|
||||
def sk14, 0x14
|
||||
@@ -1,10 +1,11 @@
|
||||
// assembler directives
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
#include "macros.inc"
|
||||
|
||||
#ifndef VERSION_CN
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
@@ -98,3 +99,5 @@ glabel __divdi3
|
||||
dsra32 $v1, $v1, 0
|
||||
jr $ra
|
||||
dsra32 $v0, $v0, 0
|
||||
|
||||
#endif
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user