c: osPiRawStartDma

This commit is contained in:
Mittenshugg
2020-08-04 19:38:58 -05:00
parent 361b12c500
commit 2134cfe8df
11 changed files with 137 additions and 209 deletions
@@ -13,24 +13,24 @@ glabel osCreatePiManager
/* 0C6C2C 800C602C 00C02825 */ move $a1, $a2
/* 0C6C30 800C6030 0C032208 */ jal osCreateMesgQueue
/* 0C6C34 800C6034 00E03025 */ move $a2, $a3
/* 0C6C38 800C6038 3C048013 */ lui $a0, %hi(D_8012AAB0) # $a0, 0x8013
/* 0C6C3C 800C603C 3C058013 */ lui $a1, %hi(D_8012AAC8) # $a1, 0x8013
/* 0C6C40 800C6040 24A5AAC8 */ addiu $a1, %lo(D_8012AAC8) # addiu $a1, $a1, -0x5538
/* 0C6C44 800C6044 2484AAB0 */ addiu $a0, %lo(D_8012AAB0) # addiu $a0, $a0, -0x5550
/* 0C6C38 800C6038 3C048013 */ lui $a0, %hi(piEventQueue) # $a0, 0x8013
/* 0C6C3C 800C603C 3C058013 */ lui $a1, %hi(piEventBuf) # $a1, 0x8013
/* 0C6C40 800C6040 24A5AAC8 */ addiu $a1, %lo(piEventBuf) # addiu $a1, $a1, -0x5538
/* 0C6C44 800C6044 2484AAB0 */ addiu $a0, %lo(piEventQueue) # addiu $a0, $a0, -0x5550
/* 0C6C48 800C6048 0C032208 */ jal osCreateMesgQueue
/* 0C6C4C 800C604C 24060001 */ li $a2, 1
/* 0C6C50 800C6050 3C0F800E */ lui $t7, %hi(D_800E4800) # $t7, 0x800e
/* 0C6C54 800C6054 8DEF4800 */ lw $t7, %lo(D_800E4800)($t7)
/* 0C6C50 800C6050 3C0F800E */ lui $t7, %hi(__osPiAccessQueueEnabled) # $t7, 0x800e
/* 0C6C54 800C6054 8DEF4800 */ lw $t7, %lo(__osPiAccessQueueEnabled)($t7)
/* 0C6C58 800C6058 00000000 */ nop
/* 0C6C5C 800C605C 15E00003 */ bnez $t7, .L800C606C
/* 0C6C60 800C6060 00000000 */ nop
/* 0C6C64 800C6064 0C034920 */ jal __osPiCreateAccessQueue
/* 0C6C68 800C6068 00000000 */ nop
.L800C606C:
/* 0C6C6C 800C606C 3C058013 */ lui $a1, %hi(D_8012AAB0) # $a1, 0x8013
/* 0C6C6C 800C606C 3C058013 */ lui $a1, %hi(piEventQueue) # $a1, 0x8013
/* 0C6C70 800C6070 3C062222 */ lui $a2, (0x22222222 >> 16) # lui $a2, 0x2222
/* 0C6C74 800C6074 34C62222 */ ori $a2, (0x22222222 & 0xFFFF) # ori $a2, $a2, 0x2222
/* 0C6C78 800C6078 24A5AAB0 */ addiu $a1, %lo(D_8012AAB0) # addiu $a1, $a1, -0x5550
/* 0C6C78 800C6078 24A5AAB0 */ addiu $a1, %lo(piEventQueue) # addiu $a1, $a1, -0x5550
/* 0C6C7C 800C607C 0C0332EC */ jal osSetEventMesg
/* 0C6C80 800C6080 24040008 */ li $a0, 8
/* 0C6C84 800C6084 2418FFFF */ li $t8, -1
@@ -49,20 +49,20 @@ glabel osCreatePiManager
/* 0C6CB4 800C60B4 00000000 */ nop
/* 0C6CB8 800C60B8 8FA90034 */ lw $t1, 0x34($sp)
/* 0C6CBC 800C60BC 8FAF0030 */ lw $t7, 0x30($sp)
/* 0C6CC0 800C60C0 3C048013 */ lui $a0, %hi(D_8012A800) # $a0, 0x8013
/* 0C6CC4 800C60C4 3C0A8013 */ lui $t2, %hi(D_8012AAB0) # $t2, 0x8013
/* 0C6CC8 800C60C8 3C0B8013 */ lui $t3, %hi(D_8012D1E8) # $t3, 0x8013
/* 0C6CCC 800C60CC 3C0C800D */ lui $t4, %hi(D_800D25A0) # $t4, 0x800d
/* 0C6CD0 800C60D0 3C0D800D */ lui $t5, %hi(D_800D2680) # $t5, 0x800d
/* 0C6CD4 800C60D4 3C0E8013 */ lui $t6, %hi(D_8012AAB0) # $t6, 0x8013
/* 0C6CD8 800C60D8 2484A800 */ addiu $a0, %lo(D_8012A800) # addiu $a0, $a0, -0x5800
/* 0C6CC0 800C60C0 3C048013 */ lui $a0, %hi(piThread) # $a0, 0x8013
/* 0C6CC4 800C60C4 3C0A8013 */ lui $t2, %hi(piEventQueue) # $t2, 0x8013
/* 0C6CC8 800C60C8 3C0B8013 */ lui $t3, %hi(piAccessQueue) # $t3, 0x8013
/* 0C6CCC 800C60CC 3C0C800D */ lui $t4, %hi(osPiRawStartDma) # $t4, 0x800d
/* 0C6CD0 800C60D0 3C0D800D */ lui $t5, %hi(osEPiRawStartDma) # $t5, 0x800d
/* 0C6CD4 800C60D4 3C0E8013 */ lui $t6, %hi(piEventQueue) # $t6, 0x8013
/* 0C6CD8 800C60D8 2484A800 */ addiu $a0, %lo(piThread) # addiu $a0, $a0, -0x5800
/* 0C6CDC 800C60DC 24080001 */ li $t0, 1
/* 0C6CE0 800C60E0 254AAAB0 */ addiu $t2, %lo(D_8012AAB0) # addiu $t2, $t2, -0x5550
/* 0C6CE4 800C60E4 256BD1E8 */ addiu $t3, %lo(D_8012D1E8) # addiu $t3, $t3, -0x2e18
/* 0C6CE8 800C60E8 258C25A0 */ addiu $t4, %lo(D_800D25A0) # addiu $t4, $t4, 0x25a0
/* 0C6CEC 800C60EC 25AD2680 */ addiu $t5, %lo(D_800D2680) # addiu $t5, $t5, 0x2680
/* 0C6CF0 800C60F0 25CEAAB0 */ addiu $t6, %lo(D_8012AAB0) # addiu $t6, $t6, -0x5550
/* 0C6CF4 800C60F4 3C06800D */ lui $a2, %hi(D_800D2760) # $a2, 0x800d
/* 0C6CE0 800C60E0 254AAAB0 */ addiu $t2, %lo(piEventQueue) # addiu $t2, $t2, -0x5550
/* 0C6CE4 800C60E4 256BD1E8 */ addiu $t3, %lo(piAccessQueue) # addiu $t3, $t3, -0x2e18
/* 0C6CE8 800C60E8 258C25A0 */ addiu $t4, %lo(osPiRawStartDma) # addiu $t4, $t4, 0x25a0
/* 0C6CEC 800C60EC 25AD2680 */ addiu $t5, %lo(osEPiRawStartDma) # addiu $t5, $t5, 0x2680
/* 0C6CF0 800C60F0 25CEAAB0 */ addiu $t6, %lo(piEventQueue) # addiu $t6, $t6, -0x5550
/* 0C6CF4 800C60F4 3C06800D */ lui $a2, %hi(__osDevMgrMain) # $a2, 0x800d
/* 0C6CF8 800C60F8 AFA2002C */ sw $v0, 0x2c($sp)
/* 0C6CFC 800C60FC AE080000 */ sw $t0, ($s0)
/* 0C6D00 800C6100 AE040004 */ sw $a0, 4($s0)
@@ -70,16 +70,16 @@ glabel osCreatePiManager
/* 0C6D08 800C6108 AE0B0010 */ sw $t3, 0x10($s0)
/* 0C6D0C 800C610C AE0C0014 */ sw $t4, 0x14($s0)
/* 0C6D10 800C6110 AE0D0018 */ sw $t5, 0x18($s0)
/* 0C6D14 800C6114 24C62760 */ addiu $a2, %lo(D_800D2760) # addiu $a2, $a2, 0x2760
/* 0C6D14 800C6114 24C62760 */ addiu $a2, %lo(__osDevMgrMain) # addiu $a2, $a2, 0x2760
/* 0C6D18 800C6118 AFAE0010 */ sw $t6, 0x10($sp)
/* 0C6D1C 800C611C 00002825 */ move $a1, $zero
/* 0C6D20 800C6120 02003825 */ move $a3, $s0
/* 0C6D24 800C6124 AE090008 */ sw $t1, 8($s0)
/* 0C6D28 800C6128 0C032214 */ jal osCreateThread
/* 0C6D2C 800C612C AFAF0014 */ sw $t7, 0x14($sp)
/* 0C6D30 800C6130 3C048013 */ lui $a0, %hi(D_8012A800) # $a0, 0x8013
/* 0C6D30 800C6130 3C048013 */ lui $a0, %hi(piThread) # $a0, 0x8013
/* 0C6D34 800C6134 0C032268 */ jal osStartThread
/* 0C6D38 800C6138 2484A800 */ addiu $a0, %lo(D_8012A800) # addiu $a0, $a0, -0x5800
/* 0C6D38 800C6138 2484A800 */ addiu $a0, %lo(piThread) # addiu $a0, $a0, -0x5800
/* 0C6D3C 800C613C 8FA4002C */ lw $a0, 0x2c($sp)
/* 0C6D40 800C6140 0C034960 */ jal __osRestoreInt
/* 0C6D44 800C6144 00000000 */ nop
@@ -1,97 +0,0 @@
glabel osCreatePiManager
/* 0C6C00 800C6000 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0C6C04 800C6004 AFB00020 */ sw $s0, 0x20($sp)
/* 0C6C08 800C6008 3C10800E */ lui $s0, %hi(__osPiDevMgr) # $s0, 0x800e
/* 0C6C0C 800C600C 26103740 */ addiu $s0, %lo(__osPiDevMgr) # addiu $s0, $s0, 0x3740
/* 0C6C10 800C6010 8E0E0000 */ lw $t6, ($s0)
/* 0C6C14 800C6014 AFBF0024 */ sw $ra, 0x24($sp)
/* 0C6C18 800C6018 AFA40030 */ sw $a0, 0x30($sp)
/* 0C6C1C 800C601C AFA50034 */ sw $a1, 0x34($sp)
/* 0C6C20 800C6020 15C0004F */ bnez $t6, .L800C6160
/* 0C6C24 800C6024 AFA60038 */ sw $a2, 0x38($sp)
/* 0C6C28 800C6028 00A02025 */ move $a0, $a1
/* 0C6C2C 800C602C 00C02825 */ move $a1, $a2
/* 0C6C30 800C6030 0C032208 */ jal osCreateMesgQueue
/* 0C6C34 800C6034 00E03025 */ move $a2, $a3
/* 0C6C38 800C6038 3C048013 */ lui $a0, %hi(D_8012AAB0) # $a0, 0x8013
/* 0C6C3C 800C603C 3C058013 */ lui $a1, %hi(D_8012AAC8) # $a1, 0x8013
/* 0C6C40 800C6040 24A5AAC8 */ addiu $a1, %lo(D_8012AAC8) # addiu $a1, $a1, -0x5538
/* 0C6C44 800C6044 2484AAB0 */ addiu $a0, %lo(D_8012AAB0) # addiu $a0, $a0, -0x5550
/* 0C6C48 800C6048 0C032208 */ jal osCreateMesgQueue
/* 0C6C4C 800C604C 24060001 */ li $a2, 1
/* 0C6C50 800C6050 3C0F800E */ lui $t7, %hi(D_800E4800) # $t7, 0x800e
/* 0C6C54 800C6054 8DEF4800 */ lw $t7, %lo(D_800E4800)($t7)
/* 0C6C58 800C6058 00000000 */ nop
/* 0C6C5C 800C605C 15E00003 */ bnez $t7, .L800C606C
/* 0C6C60 800C6060 00000000 */ nop
/* 0C6C64 800C6064 0C034920 */ jal __osPiCreateAccessQueue
/* 0C6C68 800C6068 00000000 */ nop
.L800C606C:
/* 0C6C6C 800C606C 3C058013 */ lui $a1, %hi(D_8012AAB0) # $a1, 0x8013
/* 0C6C70 800C6070 3C062222 */ lui $a2, (0x22222222 >> 16) # lui $a2, 0x2222
/* 0C6C74 800C6074 34C62222 */ ori $a2, (0x22222222 & 0xFFFF) # ori $a2, $a2, 0x2222
/* 0C6C78 800C6078 24A5AAB0 */ addiu $a1, %lo(D_8012AAB0) # addiu $a1, $a1, -0x5550
/* 0C6C7C 800C607C 0C0332EC */ jal osSetEventMesg
/* 0C6C80 800C6080 24040008 */ li $a0, 8
/* 0C6C84 800C6084 2418FFFF */ li $t8, -1
/* 0C6C88 800C6088 AFB80028 */ sw $t8, 0x28($sp)
/* 0C6C8C 800C608C 0C034950 */ jal osGetThreadPri
/* 0C6C90 800C6090 00002025 */ move $a0, $zero
/* 0C6C94 800C6094 8FB90030 */ lw $t9, 0x30($sp)
/* 0C6C98 800C6098 00002025 */ move $a0, $zero
/* 0C6C9C 800C609C 0059082A */ slt $at, $v0, $t9
/* 0C6CA0 800C60A0 10200003 */ beqz $at, .L800C60B0
/* 0C6CA4 800C60A4 03202825 */ move $a1, $t9
/* 0C6CA8 800C60A8 0C033210 */ jal osSetThreadPri
/* 0C6CAC 800C60AC AFA20028 */ sw $v0, 0x28($sp)
.L800C60B0:
/* 0C6CB0 800C60B0 0C034958 */ jal __osDisableInt
/* 0C6CB4 800C60B4 00000000 */ nop
/* 0C6CB8 800C60B8 8FA90034 */ lw $t1, 0x34($sp)
/* 0C6CBC 800C60BC 8FAF0030 */ lw $t7, 0x30($sp)
/* 0C6CC0 800C60C0 3C048013 */ lui $a0, %hi(D_8012A800) # $a0, 0x8013
/* 0C6CC4 800C60C4 3C0A8013 */ lui $t2, %hi(D_8012AAB0) # $t2, 0x8013
/* 0C6CC8 800C60C8 3C0B8013 */ lui $t3, %hi(D_8012D1E8) # $t3, 0x8013
/* 0C6CCC 800C60CC 3C0C800D */ lui $t4, %hi(D_800D25A0) # $t4, 0x800d
/* 0C6CD0 800C60D0 3C0D800D */ lui $t5, %hi(D_800D2680) # $t5, 0x800d
/* 0C6CD4 800C60D4 3C0E8013 */ lui $t6, %hi(D_8012AAB0) # $t6, 0x8013
/* 0C6CD8 800C60D8 2484A800 */ addiu $a0, %lo(D_8012A800) # addiu $a0, $a0, -0x5800
/* 0C6CDC 800C60DC 24080001 */ li $t0, 1
/* 0C6CE0 800C60E0 254AAAB0 */ addiu $t2, %lo(D_8012AAB0) # addiu $t2, $t2, -0x5550
/* 0C6CE4 800C60E4 256BD1E8 */ addiu $t3, %lo(D_8012D1E8) # addiu $t3, $t3, -0x2e18
/* 0C6CE8 800C60E8 258C25A0 */ addiu $t4, %lo(D_800D25A0) # addiu $t4, $t4, 0x25a0
/* 0C6CEC 800C60EC 25AD2680 */ addiu $t5, %lo(D_800D2680) # addiu $t5, $t5, 0x2680
/* 0C6CF0 800C60F0 25CEAAB0 */ addiu $t6, %lo(D_8012AAB0) # addiu $t6, $t6, -0x5550
/* 0C6CF4 800C60F4 3C06800D */ lui $a2, %hi(D_800D2760) # $a2, 0x800d
/* 0C6CF8 800C60F8 AFA2002C */ sw $v0, 0x2c($sp)
/* 0C6CFC 800C60FC AE080000 */ sw $t0, ($s0)
/* 0C6D00 800C6100 AE040004 */ sw $a0, 4($s0)
/* 0C6D04 800C6104 AE0A000C */ sw $t2, 0xc($s0)
/* 0C6D08 800C6108 AE0B0010 */ sw $t3, 0x10($s0)
/* 0C6D0C 800C610C AE0C0014 */ sw $t4, 0x14($s0)
/* 0C6D10 800C6110 AE0D0018 */ sw $t5, 0x18($s0)
/* 0C6D14 800C6114 24C62760 */ addiu $a2, %lo(D_800D2760) # addiu $a2, $a2, 0x2760
/* 0C6D18 800C6118 AFAE0010 */ sw $t6, 0x10($sp)
/* 0C6D1C 800C611C 00002825 */ move $a1, $zero
/* 0C6D20 800C6120 02003825 */ move $a3, $s0
/* 0C6D24 800C6124 AE090008 */ sw $t1, 8($s0)
/* 0C6D28 800C6128 0C032214 */ jal osCreateThread
/* 0C6D2C 800C612C AFAF0014 */ sw $t7, 0x14($sp)
/* 0C6D30 800C6130 3C048013 */ lui $a0, %hi(D_8012A800) # $a0, 0x8013
/* 0C6D34 800C6134 0C032268 */ jal osStartThread
/* 0C6D38 800C6138 2484A800 */ addiu $a0, %lo(D_8012A800) # addiu $a0, $a0, -0x5800
/* 0C6D3C 800C613C 8FA4002C */ lw $a0, 0x2c($sp)
/* 0C6D40 800C6140 0C034960 */ jal __osRestoreInt
/* 0C6D44 800C6144 00000000 */ nop
/* 0C6D48 800C6148 8FB80028 */ lw $t8, 0x28($sp)
/* 0C6D4C 800C614C 2401FFFF */ li $at, -1
/* 0C6D50 800C6150 13010003 */ beq $t8, $at, .L800C6160
/* 0C6D54 800C6154 00002025 */ move $a0, $zero
/* 0C6D58 800C6158 0C033210 */ jal osSetThreadPri
/* 0C6D5C 800C615C 03002825 */ move $a1, $t8
.L800C6160:
/* 0C6D60 800C6160 8FBF0024 */ lw $ra, 0x24($sp)
/* 0C6D64 800C6164 8FB00020 */ lw $s0, 0x20($sp)
/* 0C6D68 800C6168 03E00008 */ jr $ra
/* 0C6D6C 800C616C 27BD0030 */ addiu $sp, $sp, 0x30
+1 -1
View File
@@ -9210,7 +9210,7 @@ glabel D_800E47B0
.word 0x000E0204
.word 0x00000002
glabel D_800E4800
glabel __osPiAccessQueueEnabled
.word 0x00000000
.word 0x00000000
.word 0x00000000
Executable
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
shopt -s globstar
if [ "$#" -ne "1" ];
then
echo "usage: $0 name"
exit 1
fi
#echo "Replace $1 with $2?"
#read
grep -r "$1" asm/**/*.s src/**/*.c lib/**/*.{c,s} include/*.h data/dkr.data.s undefined_syms.txt
@@ -1,65 +0,0 @@
glabel D_800D25A0
/* 0D31A0 800D25A0 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 0D31A4 800D25A4 AFBF001C */ sw $ra, 0x1c($sp)
/* 0D31A8 800D25A8 AFA40028 */ sw $a0, 0x28($sp)
/* 0D31AC 800D25AC AFA5002C */ sw $a1, 0x2c($sp)
/* 0D31B0 800D25B0 AFA60030 */ sw $a2, 0x30($sp)
/* 0D31B4 800D25B4 AFA70034 */ sw $a3, 0x34($sp)
/* 0D31B8 800D25B8 AFB10018 */ sw $s1, 0x18($sp)
/* 0D31BC 800D25BC AFB00014 */ sw $s0, 0x14($sp)
/* 0D31C0 800D25C0 3C0EA460 */ lui $t6, %hi(D_A4600010) # $t6, 0xa460
/* 0D31C4 800D25C4 8DD00010 */ lw $s0, %lo(D_A4600010)($t6)
/* 0D31C8 800D25C8 320F0003 */ andi $t7, $s0, 3
/* 0D31CC 800D25CC 11E00006 */ beqz $t7, .L800D25E8
/* 0D31D0 800D25D0 00000000 */ nop
.L800D25D4:
/* 0D31D4 800D25D4 3C18A460 */ lui $t8, %hi(D_A4600010) # $t8, 0xa460
/* 0D31D8 800D25D8 8F100010 */ lw $s0, %lo(D_A4600010)($t8)
/* 0D31DC 800D25DC 32190003 */ andi $t9, $s0, 3
/* 0D31E0 800D25E0 1720FFFC */ bnez $t9, .L800D25D4
/* 0D31E4 800D25E4 00000000 */ nop
.L800D25E8:
/* 0D31E8 800D25E8 0C03233C */ jal osVirtualToPhysical
/* 0D31EC 800D25EC 8FA40030 */ lw $a0, 0x30($sp)
/* 0D31F0 800D25F0 3C08A460 */ lui $t0, 0xa460
/* 0D31F4 800D25F4 AD020000 */ sw $v0, ($t0)
/* 0D31F8 800D25F8 3C098000 */ lui $t1, %hi(osRomBase) # $t1, 0x8000
/* 0D31FC 800D25FC 8D290308 */ lw $t1, %lo(osRomBase)($t1)
/* 0D3200 800D2600 8FAA002C */ lw $t2, 0x2c($sp)
/* 0D3204 800D2604 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff
/* 0D3208 800D2608 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 0D320C 800D260C 012A5825 */ or $t3, $t1, $t2
/* 0D3210 800D2610 01616024 */ and $t4, $t3, $at
/* 0D3214 800D2614 3C0DA460 */ lui $t5, %hi(D_A4600004) # $t5, 0xa460
/* 0D3218 800D2618 ADAC0004 */ sw $t4, %lo(D_A4600004)($t5)
/* 0D321C 800D261C 8FB10028 */ lw $s1, 0x28($sp)
/* 0D3220 800D2620 12200005 */ beqz $s1, .L800D2638
/* 0D3224 800D2624 24010001 */ li $at, 1
/* 0D3228 800D2628 12210008 */ beq $s1, $at, .L800D264C
/* 0D322C 800D262C 00000000 */ nop
/* 0D3230 800D2630 1000000B */ b .L800D2660
/* 0D3234 800D2634 00000000 */ nop
.L800D2638:
/* 0D3238 800D2638 8FAE0034 */ lw $t6, 0x34($sp)
/* 0D323C 800D263C 3C18A460 */ lui $t8, %hi(D_A460000C) # $t8, 0xa460
/* 0D3240 800D2640 25CFFFFF */ addiu $t7, $t6, -1
/* 0D3244 800D2644 10000008 */ b .L800D2668
/* 0D3248 800D2648 AF0F000C */ sw $t7, %lo(D_A460000C)($t8)
.L800D264C:
/* 0D324C 800D264C 8FB90034 */ lw $t9, 0x34($sp)
/* 0D3250 800D2650 3C09A460 */ lui $t1, %hi(D_A4600008) # $t1, 0xa460
/* 0D3254 800D2654 2728FFFF */ addiu $t0, $t9, -1
/* 0D3258 800D2658 10000003 */ b .L800D2668
/* 0D325C 800D265C AD280008 */ sw $t0, %lo(D_A4600008)($t1)
.L800D2660:
/* 0D3260 800D2660 10000002 */ b .L800D266C
/* 0D3264 800D2664 2402FFFF */ li $v0, -1
.L800D2668:
/* 0D3268 800D2668 00001025 */ move $v0, $zero
.L800D266C:
/* 0D326C 800D266C 8FBF001C */ lw $ra, 0x1c($sp)
/* 0D3270 800D2670 8FB00014 */ lw $s0, 0x14($sp)
/* 0D3274 800D2674 8FB10018 */ lw $s1, 0x18($sp)
/* 0D3278 800D2678 03E00008 */ jr $ra
/* 0D327C 800D267C 27BD0028 */ addiu $sp, $sp, 0x28
@@ -1,4 +1,4 @@
glabel D_800D2760
glabel __osDevMgrMain
/* 0D3360 800D2760 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 0D3364 800D2764 AFA40040 */ sw $a0, 0x40($sp)
/* 0D3368 800D2768 8FAE0040 */ lw $t6, 0x40($sp)
@@ -1,4 +1,4 @@
glabel D_800D2680
glabel osEPiRawStartDma
/* 0D3280 800D2680 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 0D3284 800D2684 AFBF001C */ sw $ra, 0x1c($sp)
/* 0D3288 800D2688 AFA40028 */ sw $a0, 0x28($sp)
+8 -8
View File
@@ -8,26 +8,26 @@
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/func_800D2470.s")
#define PI_Q_BUF_LEN 1
extern u32 D_800E4800;//__osPiAccessQueueEnabled
extern u32 __osPiAccessQueueEnabled;//__osPiAccessQueueEnabled
extern OSMesg D_8012D1E0[PI_Q_BUF_LEN];//piAccessBuf
extern OSMesgQueue D_8012D1E8; //__osPiAccessQueue
extern OSMesgQueue piAccessQueue; //__osPiAccessQueue
void __osPiCreateAccessQueue(void)
{
D_800E4800 = 1;
osCreateMesgQueue(&D_8012D1E8, D_8012D1E0, PI_Q_BUF_LEN);
osSendMesg(&D_8012D1E8, NULL, OS_MESG_NOBLOCK);
__osPiAccessQueueEnabled = 1;
osCreateMesgQueue(&piAccessQueue, D_8012D1E0, PI_Q_BUF_LEN);
osSendMesg(&piAccessQueue, NULL, OS_MESG_NOBLOCK);
}
void __osPiGetAccess(void)
{
OSMesg dummyMesg;
if (!D_800E4800)
if (!__osPiAccessQueueEnabled)
__osPiCreateAccessQueue();
osRecvMesg(&D_8012D1E8, &dummyMesg, OS_MESG_BLOCK);
osRecvMesg(&piAccessQueue, &dummyMesg, OS_MESG_BLOCK);
}
void __osPiRelAccess(void)
{
osSendMesg(&D_8012D1E8, NULL, OS_MESG_NOBLOCK);
osSendMesg(&piAccessQueue, NULL, OS_MESG_NOBLOCK);
}
+30 -3
View File
@@ -4,12 +4,39 @@
#include "types.h"
#include "macros.h"
#include "libultra_internal.h"
#include "hardware.h"
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/__osDisableInt.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/__osRestoreInt.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/D_800D25A0.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/D_800D2680.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/D_800D2760.s")
s32 osPiRawStartDma(s32 direction, u32 devAddr, void *dramAddr, u32 size)
{
register int status;
status = HW_REG(PI_STATUS_REG, u32);
while (status & (PI_STATUS_BUSY | PI_STATUS_IOBUSY | PI_STATUS_ERROR)) {
status = HW_REG(PI_STATUS_REG, u32);
}
HW_REG(PI_DRAM_ADDR_REG, void *) = (void *) osVirtualToPhysical(dramAddr);
HW_REG(PI_CART_ADDR_REG, void *) = (void *) (((uintptr_t) osRomBase | devAddr) & 0x1fffffff);
switch (direction) {
case OS_READ:
HW_REG(PI_WR_LEN_REG, u32) = size - 1;
break;
case OS_WRITE:
HW_REG(PI_RD_LEN_REG, u32) = size - 1;
break;
default:
return -1;
break;
}
return 0;
}
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/osEPiRawStartDma.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/__osDevMgrMain.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/__osViInit.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/func_800D2C60.s")
+50 -1
View File
@@ -3,6 +3,18 @@
#include "types.h"
#include "macros.h"
#include "libultra_internal.h"
#define OS_PIM_STACKSIZE 4096
extern u32 __osPiAccessQueueEnabled; //__osPiAccessQueueEnabled
extern OSDevMgr __osPiDevMgr;
extern u8 piThreadStack[OS_PIM_STACKSIZE];//piThreadStack
extern OSThread piThread; //piThread
extern OSMesgQueue piEventQueue; //piEventQueue
extern OSMesg piEventBuf[1]; //piEventBuf
extern OSMesgQueue piAccessQueue; //piAccessQueue
void __osDevMgrMain(void);
extern s32* D_800E3040;
extern s32* D_800E3044;
@@ -233,7 +245,44 @@ GLOBAL_ASM("asm/non_matchings/unknown_0B8920/func_800C5AA0.s")
GLOBAL_ASM("asm/non_matchings/unknown_0B8920/func_800C5B58.s")
GLOBAL_ASM("asm/non_matchings/unknown_0B8920/func_800C5F60.s")
GLOBAL_ASM("asm/non_matchings/unknown_0B8920/osCreatePiManager.s")
void osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf, s32 cmdMsgCnt)
{
u32 savedMask;
OSPri oldPri;
OSPri myPri;
if (!__osPiDevMgr.active)
{
osCreateMesgQueue(cmdQ, cmdBuf, cmdMsgCnt);
osCreateMesgQueue(&piEventQueue, (OSMesg*)&piEventBuf, 1);
if (!__osPiAccessQueueEnabled)
__osPiCreateAccessQueue();
osSetEventMesg(OS_EVENT_PI, &piEventQueue, (OSMesg)0x22222222);
oldPri = -1;
myPri = osGetThreadPri(NULL);
if (myPri < pri)
{
oldPri = myPri;
osSetThreadPri(NULL, pri);
}
savedMask = __osDisableInt();
__osPiDevMgr.active = 1;
__osPiDevMgr.thread = &piThread;
__osPiDevMgr.cmdQueue = cmdQ;
__osPiDevMgr.evtQueue = &piEventQueue;
__osPiDevMgr.acsQueue = &piAccessQueue;
__osPiDevMgr.dma = osPiRawStartDma;
__osPiDevMgr.edma = osEPiRawStartDma;
osCreateThread(&piThread, 0, __osDevMgrMain, &__osPiDevMgr, &piThreadStack[OS_PIM_STACKSIZE], pri);
osStartThread(&piThread);
__osRestoreInt(savedMask);
if (oldPri != -1)
{
osSetThreadPri(NULL, oldPri);
}
}
}
void func_800C6170(void) {
D_800E3760 = func_80070C9C(0x2800, 0xFF);
+9 -8
View File
@@ -60,9 +60,9 @@ D_800CC3C0 = 0x800CC3C0;
D_800CC4E0 = 0x800CC4E0;
D_800CC514 = 0x800CC514;
viMgrMain = 0x800D1B08;
D_800D25A0 = 0x800D25A0;
D_800D2680 = 0x800D2680;
D_800D2760 = 0x800D2760;
osPiRawStartDma = 0x800D25A0;
osEPiRawStartDma = 0x800D2680;
__osDevMgrMain = 0x800D2760;
__osExceptionPreamble = 0x800D2CB0;
__osException = 0x800D2CC0;
__osCleanupThread = 0x800D35A0;
@@ -780,7 +780,7 @@ D_800E46C0 = 0x800E46C0;
D_800E4710 = 0x800E4710;
D_800E4760 = 0x800E4760;
D_800E47B0 = 0x800E47B0;
D_800E4800 = 0x800E4800;
__osPiAccessQueueEnabled = 0x800E4800;
D_800E4810 = 0x800E4810;
D_800E4870 = 0x800E4870;
D_800E4874 = 0x800E4874;
@@ -2692,6 +2692,7 @@ D_8012991C = 0x8012991C;
D_80129920 = 0x80129920;
D_80129924 = 0x80129924;
D_801299B0 = 0x801299B0;
piThreadStack = 0x80129AB0;
D_80129BB0 = 0x80129BB0;
D_80129FB0 = 0x80129FB0;
D_80129FBC = 0x80129FBC;
@@ -2799,9 +2800,9 @@ D_8012A7E8 = 0x8012A7E8;
D_8012A7EC = 0x8012A7EC;
D_8012A7F0 = 0x8012A7F0;
D_8012A7F4 = 0x8012A7F4;
D_8012A800 = 0x8012A800;
D_8012AAB0 = 0x8012AAB0;
D_8012AAC8 = 0x8012AAC8;
piThread = 0x8012A800;
piEventQueue = 0x8012AAB0;
piEventBuf = 0x8012AAC8;
gzip_bit_buffer = 0x8012AAD0;
gzip_num_bits = 0x8012AAD4;
D_8012AAD8 = 0x8012AAD8;
@@ -2832,7 +2833,7 @@ viCounterMsg = 0x8012D178;
D_8012D190 = 0x8012D190;
D_8012D1A0 = 0x8012D1A0;
D_8012D1E0 = 0x8012D1E0;
D_8012D1E8 = 0x8012D1E8;
piAccessQueue = 0x8012D1E8;
__osCurrentTime = 0x8012D220;
D_8012D224 = 0x8012D224;
__osBaseCounter = 0x8012D228;