Decompile __osPfsRWInode
This commit is contained in:
parent
0e8bce54ed
commit
3e925e7398
|
|
@ -98,6 +98,10 @@ typedef struct {
|
|||
#define PFS_ONE_PAGE 8 /* blocks */
|
||||
#define PFS_MAX_BANKS 62
|
||||
|
||||
#define PFS_READ 0
|
||||
#define PFS_WRITE 1
|
||||
#define PFS_CREATE 2
|
||||
|
||||
#define PFS_INITIALIZED 0x1
|
||||
#define PFS_CORRUPTED 0x2
|
||||
|
||||
|
|
|
|||
|
|
@ -121,8 +121,8 @@ extern OSThread *__osFaultedThread;
|
|||
extern u32 __osSiAccessQueueEnabled;
|
||||
extern u32 __osContInitialized;
|
||||
extern u32 var80060970;
|
||||
extern u32 var80060980;
|
||||
extern u8 var80060984;
|
||||
extern s32 g_PfsPrevChannel;
|
||||
extern u8 g_PfsPrevBank;
|
||||
extern u32 var80060990;
|
||||
extern u32 var800609a0;
|
||||
extern u32 var800609c4;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,6 @@ s32 __osRepairPackId(OSPfs *pfs, __OSPackId *badid, __OSPackId *newid);
|
|||
s32 __osCheckPackId(OSPfs *pfs, __OSPackId *temp);
|
||||
s32 __osGetId(OSPfs *pfs);
|
||||
u32 func0004c860(void);
|
||||
u32 func0004c934(void);
|
||||
s32 __osPfsRWInode(OSPfs *pfs, __OSInode *inode, u8 flag, u8 bank);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ typedef struct
|
|||
|
||||
s32 __osDisableInt();
|
||||
void __osRestoreInt(s32);
|
||||
s32 __osContRamRead(OSMesgQueue *mq, int channel, u16 address, u8 *buffer);
|
||||
s32 __osContRamWrite(OSMesgQueue *mq, int channel, u16 address, u8 *buffer, int force);
|
||||
void __osEnqueueAndYield(OSThread**);
|
||||
void __osDequeueThread(OSThread**, OSThread*);
|
||||
void __osEnqueueThread(OSThread**, OSThread*);
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ glabel func00006550
|
|||
/* 6704: 02802825 */ or $a1,$s4,$zero
|
||||
/* 6708: 00003025 */ or $a2,$zero,$zero
|
||||
/* 670c: 32c700ff */ andi $a3,$s6,0xff
|
||||
/* 6710: 0c01324d */ jal func0004c934
|
||||
/* 6710: 0c01324d */ jal __osPfsRWInode
|
||||
/* 6714: afa3009c */ sw $v1,0x9c($sp)
|
||||
/* 6718: 8fa3009c */ lw $v1,0x9c($sp)
|
||||
/* 671c: 10400003 */ beqz $v0,.L0000672c
|
||||
|
|
@ -240,7 +240,7 @@ glabel func00006550
|
|||
/* 686c: 02a02025 */ or $a0,$s5,$zero
|
||||
/* 6870: 02802825 */ or $a1,$s4,$zero
|
||||
/* 6874: 00003025 */ or $a2,$zero,$zero
|
||||
/* 6878: 0c01324d */ jal func0004c934
|
||||
/* 6878: 0c01324d */ jal __osPfsRWInode
|
||||
/* 687c: 32c700ff */ andi $a3,$s6,0xff
|
||||
/* 6880: 10400003 */ beqz $v0,.L00006890
|
||||
/* 6884: 02a02025 */ or $a0,$s5,$zero
|
||||
|
|
@ -280,7 +280,7 @@ glabel func00006550
|
|||
/* 6900: 02a02025 */ or $a0,$s5,$zero
|
||||
/* 6904: 24060001 */ addiu $a2,$zero,0x1
|
||||
/* 6908: 324700ff */ andi $a3,$s2,0xff
|
||||
/* 690c: 0c01324d */ jal func0004c934
|
||||
/* 690c: 0c01324d */ jal __osPfsRWInode
|
||||
/* 6910: a0590001 */ sb $t9,0x1($v0)
|
||||
/* 6914: 50400004 */ beqzl $v0,.L00006928
|
||||
/* 6918: 27a300c4 */ addiu $v1,$sp,0xc4
|
||||
|
|
@ -338,7 +338,7 @@ glabel func00006550
|
|||
.L000069c8:
|
||||
/* 69c8: 27a500c4 */ addiu $a1,$sp,0xc4
|
||||
/* 69cc: 24060001 */ addiu $a2,$zero,0x1
|
||||
/* 69d0: 0c01324d */ jal func0004c934
|
||||
/* 69d0: 0c01324d */ jal __osPfsRWInode
|
||||
/* 69d4: 324700ff */ andi $a3,$s2,0xff
|
||||
/* 69d8: 104000d4 */ beqz $v0,.L00006d2c
|
||||
/* 69dc: 00402025 */ or $a0,$v0,$zero
|
||||
|
|
@ -359,7 +359,7 @@ glabel func00006550
|
|||
.L00006a14:
|
||||
/* 6a14: 02802825 */ or $a1,$s4,$zero
|
||||
/* 6a18: 00003025 */ or $a2,$zero,$zero
|
||||
/* 6a1c: 0c01324d */ jal func0004c934
|
||||
/* 6a1c: 0c01324d */ jal __osPfsRWInode
|
||||
/* 6a20: 32c700ff */ andi $a3,$s6,0xff
|
||||
/* 6a24: 10400003 */ beqz $v0,.L00006a34
|
||||
/* 6a28: 27aa005c */ addiu $t2,$sp,0x5c
|
||||
|
|
@ -416,7 +416,7 @@ glabel func00006550
|
|||
/* 6ae0: 028d7021 */ addu $t6,$s4,$t5
|
||||
/* 6ae4: a5cc0000 */ sh $t4,0x0($t6)
|
||||
/* 6ae8: 24060001 */ addiu $a2,$zero,0x1
|
||||
/* 6aec: 0c01324d */ jal func0004c934
|
||||
/* 6aec: 0c01324d */ jal __osPfsRWInode
|
||||
/* 6af0: 32c700ff */ andi $a3,$s6,0xff
|
||||
/* 6af4: 50400004 */ beqzl $v0,.L00006b08
|
||||
/* 6af8: 8faf0060 */ lw $t7,0x60($sp)
|
||||
|
|
@ -434,7 +434,7 @@ glabel func00006550
|
|||
/* 6b20: 00003025 */ or $a2,$zero,$zero
|
||||
/* 6b24: a7210000 */ sh $at,0x0($t9)
|
||||
/* 6b28: 93b60094 */ lbu $s6,0x94($sp)
|
||||
/* 6b2c: 0c01324d */ jal func0004c934
|
||||
/* 6b2c: 0c01324d */ jal __osPfsRWInode
|
||||
/* 6b30: 02c03825 */ or $a3,$s6,$zero
|
||||
/* 6b34: 10400003 */ beqz $v0,.L00006b44
|
||||
/* 6b38: 00000000 */ nop
|
||||
|
|
@ -491,7 +491,7 @@ glabel func00006550
|
|||
/* 6be4: 02a02025 */ or $a0,$s5,$zero
|
||||
/* 6be8: 02802825 */ or $a1,$s4,$zero
|
||||
/* 6bec: 24060001 */ addiu $a2,$zero,0x1
|
||||
/* 6bf0: 0c01324d */ jal func0004c934
|
||||
/* 6bf0: 0c01324d */ jal __osPfsRWInode
|
||||
/* 6bf4: 32c700ff */ andi $a3,$s6,0xff
|
||||
/* 6bf8: 50400039 */ beqzl $v0,.L00006ce0
|
||||
/* 6bfc: 97a200ae */ lhu $v0,0xae($sp)
|
||||
|
|
@ -521,7 +521,7 @@ glabel func00006550
|
|||
.L00006c54:
|
||||
/* 6c54: 02802825 */ or $a1,$s4,$zero
|
||||
/* 6c58: 24060001 */ addiu $a2,$zero,0x1
|
||||
/* 6c5c: 0c01324d */ jal func0004c934
|
||||
/* 6c5c: 0c01324d */ jal __osPfsRWInode
|
||||
/* 6c60: 32c700ff */ andi $a3,$s6,0xff
|
||||
/* 6c64: 10400003 */ beqz $v0,.L00006c74
|
||||
/* 6c68: 97b80070 */ lhu $t8,0x70($sp)
|
||||
|
|
@ -539,7 +539,7 @@ glabel func00006550
|
|||
/* 6c90: 02802825 */ or $a1,$s4,$zero
|
||||
/* 6c94: 00003025 */ or $a2,$zero,$zero
|
||||
/* 6c98: 02c03825 */ or $a3,$s6,$zero
|
||||
/* 6c9c: 0c01324d */ jal func0004c934
|
||||
/* 6c9c: 0c01324d */ jal __osPfsRWInode
|
||||
/* 6ca0: a5410000 */ sh $at,0x0($t2)
|
||||
/* 6ca4: 50400004 */ beqzl $v0,.L00006cb8
|
||||
/* 6ca8: 92a20064 */ lbu $v0,0x64($s5)
|
||||
|
|
|
|||
|
|
@ -8,73 +8,8 @@
|
|||
#include "data.h"
|
||||
#include "types.h"
|
||||
|
||||
u32 var8009c870;
|
||||
u32 var8009c874;
|
||||
u32 var8009c878;
|
||||
u32 var8009c87c;
|
||||
u32 var8009c880;
|
||||
u32 var8009c884;
|
||||
u32 var8009c888;
|
||||
u32 var8009c88c;
|
||||
u32 var8009c890;
|
||||
u32 var8009c894;
|
||||
u32 var8009c898;
|
||||
u32 var8009c89c;
|
||||
u32 var8009c8a0;
|
||||
u32 var8009c8a4;
|
||||
u32 var8009c8a8;
|
||||
u32 var8009c8ac;
|
||||
u32 var8009c8b0;
|
||||
u32 var8009c8b4;
|
||||
u32 var8009c8b8;
|
||||
u32 var8009c8bc;
|
||||
u32 var8009c8c0;
|
||||
u32 var8009c8c4;
|
||||
u32 var8009c8c8;
|
||||
u32 var8009c8cc;
|
||||
u32 var8009c8d0;
|
||||
u32 var8009c8d4;
|
||||
u32 var8009c8d8;
|
||||
u32 var8009c8dc;
|
||||
u32 var8009c8e0;
|
||||
u32 var8009c8e4;
|
||||
u32 var8009c8e8;
|
||||
u32 var8009c8ec;
|
||||
u32 var8009c8f0;
|
||||
u32 var8009c8f4;
|
||||
u32 var8009c8f8;
|
||||
u32 var8009c8fc;
|
||||
u32 var8009c900;
|
||||
u32 var8009c904;
|
||||
u32 var8009c908;
|
||||
u32 var8009c90c;
|
||||
u32 var8009c910;
|
||||
u32 var8009c914;
|
||||
u32 var8009c918;
|
||||
u32 var8009c91c;
|
||||
u32 var8009c920;
|
||||
u32 var8009c924;
|
||||
u32 var8009c928;
|
||||
u32 var8009c92c;
|
||||
u32 var8009c930;
|
||||
u32 var8009c934;
|
||||
u32 var8009c938;
|
||||
u32 var8009c93c;
|
||||
u32 var8009c940;
|
||||
u32 var8009c944;
|
||||
u32 var8009c948;
|
||||
u32 var8009c94c;
|
||||
u32 var8009c950;
|
||||
u32 var8009c954;
|
||||
u32 var8009c958;
|
||||
u32 var8009c95c;
|
||||
u32 var8009c960;
|
||||
u32 var8009c964;
|
||||
u32 var8009c968;
|
||||
u32 var8009c96c;
|
||||
|
||||
u32 var80060980 = 0xffffffff;
|
||||
u8 var80060984 = 0xfa;
|
||||
s32 g_PfsPrevChannel = -1;
|
||||
u8 g_PfsPrevBank = 250;
|
||||
|
||||
u16 __osSumCalc(u8 *ptr, int length)
|
||||
{
|
||||
|
|
@ -607,203 +542,70 @@ glabel func0004c860
|
|||
/* 4c930: 00000000 */ nop
|
||||
);
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0004c934
|
||||
/* 4c934: 27bdffa8 */ addiu $sp,$sp,-88
|
||||
/* 4c938: afb40030 */ sw $s4,0x30($sp)
|
||||
/* 4c93c: 30d400ff */ andi $s4,$a2,0xff
|
||||
/* 4c940: afb20028 */ sw $s2,0x28($sp)
|
||||
/* 4c944: 00809025 */ or $s2,$a0,$zero
|
||||
/* 4c948: afbf0034 */ sw $ra,0x34($sp)
|
||||
/* 4c94c: afb3002c */ sw $s3,0x2c($sp)
|
||||
/* 4c950: afb10024 */ sw $s1,0x24($sp)
|
||||
/* 4c954: afb00020 */ sw $s0,0x20($sp)
|
||||
/* 4c958: afa5005c */ sw $a1,0x5c($sp)
|
||||
/* 4c95c: afa60060 */ sw $a2,0x60($sp)
|
||||
/* 4c960: 16800011 */ bnez $s4,.L0004c9a8
|
||||
/* 4c964: afa70064 */ sw $a3,0x64($sp)
|
||||
/* 4c968: 3c0f8006 */ lui $t7,%hi(var80060984)
|
||||
/* 4c96c: 91ef0984 */ lbu $t7,%lo(var80060984)($t7)
|
||||
/* 4c970: 93b80067 */ lbu $t8,0x67($sp)
|
||||
/* 4c974: 3c198006 */ lui $t9,%hi(var80060980)
|
||||
/* 4c978: 55f8000c */ bnel $t7,$t8,.L0004c9ac
|
||||
/* 4c97c: 92490065 */ lbu $t1,0x65($s2)
|
||||
/* 4c980: 8f390980 */ lw $t9,%lo(var80060980)($t9)
|
||||
/* 4c984: 8c880008 */ lw $t0,0x8($a0)
|
||||
/* 4c988: 3c04800a */ lui $a0,%hi(var8009c870)
|
||||
/* 4c98c: 2484c870 */ addiu $a0,$a0,%lo(var8009c870)
|
||||
/* 4c990: 57280006 */ bnel $t9,$t0,.L0004c9ac
|
||||
/* 4c994: 92490065 */ lbu $t1,0x65($s2)
|
||||
/* 4c998: 0c012c5c */ jal bcopy
|
||||
/* 4c99c: 24060100 */ addiu $a2,$zero,0x100
|
||||
/* 4c9a0: 10000091 */ b .L0004cbe8
|
||||
/* 4c9a4: 00001025 */ or $v0,$zero,$zero
|
||||
.L0004c9a8:
|
||||
/* 4c9a8: 92490065 */ lbu $t1,0x65($s2)
|
||||
.L0004c9ac:
|
||||
/* 4c9ac: 02402025 */ or $a0,$s2,$zero
|
||||
/* 4c9b0: 51200008 */ beqzl $t1,.L0004c9d4
|
||||
/* 4c9b4: 93a30067 */ lbu $v1,0x67($sp)
|
||||
/* 4c9b8: 0c013378 */ jal __osPfsSelectBank
|
||||
/* 4c9bc: 00002825 */ or $a1,$zero,$zero
|
||||
/* 4c9c0: 50400004 */ beqzl $v0,.L0004c9d4
|
||||
/* 4c9c4: 93a30067 */ lbu $v1,0x67($sp)
|
||||
/* 4c9c8: 10000088 */ b .L0004cbec
|
||||
/* 4c9cc: 8fbf0034 */ lw $ra,0x34($sp)
|
||||
/* 4c9d0: 93a30067 */ lbu $v1,0x67($sp)
|
||||
.L0004c9d4:
|
||||
/* 4c9d4: 24020001 */ addiu $v0,$zero,0x1
|
||||
/* 4c9d8: 240a0001 */ addiu $t2,$zero,0x1
|
||||
/* 4c9dc: 58600004 */ blezl $v1,.L0004c9f0
|
||||
/* 4c9e0: 8e4b0060 */ lw $t3,0x60($s2)
|
||||
/* 4c9e4: 10000003 */ b .L0004c9f4
|
||||
/* 4c9e8: afaa0048 */ sw $t2,0x48($sp)
|
||||
/* 4c9ec: 8e4b0060 */ lw $t3,0x60($s2)
|
||||
.L0004c9f0:
|
||||
/* 4c9f0: afab0048 */ sw $t3,0x48($sp)
|
||||
.L0004c9f4:
|
||||
/* 4c9f4: 1454000c */ bne $v0,$s4,.L0004ca28
|
||||
/* 4c9f8: 8fad0048 */ lw $t5,0x48($sp)
|
||||
/* 4c9fc: 8fac005c */ lw $t4,0x5c($sp)
|
||||
/* 4ca00: 000d2823 */ negu $a1,$t5
|
||||
/* 4ca04: 00057840 */ sll $t7,$a1,0x1
|
||||
/* 4ca08: 000d7040 */ sll $t6,$t5,0x1
|
||||
/* 4ca0c: 25e50100 */ addiu $a1,$t7,0x100
|
||||
/* 4ca10: afa3003c */ sw $v1,0x3c($sp)
|
||||
/* 4ca14: 0c013024 */ jal __osSumCalc
|
||||
/* 4ca18: 018e2021 */ addu $a0,$t4,$t6
|
||||
/* 4ca1c: 8fb8005c */ lw $t8,0x5c($sp)
|
||||
/* 4ca20: 8fa3003c */ lw $v1,0x3c($sp)
|
||||
/* 4ca24: a3020001 */ sb $v0,0x1($t8)
|
||||
.L0004ca28:
|
||||
/* 4ca28: 00008025 */ or $s0,$zero,$zero
|
||||
/* 4ca2c: 8fb1005c */ lw $s1,0x5c($sp)
|
||||
/* 4ca30: 000398c0 */ sll $s3,$v1,0x3
|
||||
.L0004ca34:
|
||||
/* 4ca34: 24020001 */ addiu $v0,$zero,0x1
|
||||
/* 4ca38: 14540016 */ bne $v0,$s4,.L0004ca94
|
||||
/* 4ca3c: 8e450008 */ lw $a1,0x8($s2)
|
||||
/* 4ca40: 8e590054 */ lw $t9,0x54($s2)
|
||||
/* 4ca44: 8e440004 */ lw $a0,0x4($s2)
|
||||
/* 4ca48: afa00010 */ sw $zero,0x10($sp)
|
||||
/* 4ca4c: 03334021 */ addu $t0,$t9,$s3
|
||||
/* 4ca50: 01103021 */ addu $a2,$t0,$s0
|
||||
/* 4ca54: 30c9ffff */ andi $t1,$a2,0xffff
|
||||
/* 4ca58: 01203025 */ or $a2,$t1,$zero
|
||||
/* 4ca5c: 0c012d84 */ jal __osContRamWrite
|
||||
/* 4ca60: 02203825 */ or $a3,$s1,$zero
|
||||
/* 4ca64: 8e4a0058 */ lw $t2,0x58($s2)
|
||||
/* 4ca68: 8e440004 */ lw $a0,0x4($s2)
|
||||
/* 4ca6c: 8e450008 */ lw $a1,0x8($s2)
|
||||
/* 4ca70: 01535821 */ addu $t3,$t2,$s3
|
||||
/* 4ca74: 01703021 */ addu $a2,$t3,$s0
|
||||
/* 4ca78: 30ccffff */ andi $t4,$a2,0xffff
|
||||
/* 4ca7c: 01803025 */ or $a2,$t4,$zero
|
||||
/* 4ca80: afa00010 */ sw $zero,0x10($sp)
|
||||
/* 4ca84: 0c012d84 */ jal __osContRamWrite
|
||||
/* 4ca88: 02203825 */ or $a3,$s1,$zero
|
||||
/* 4ca8c: 1000000a */ b .L0004cab8
|
||||
/* 4ca90: 00401825 */ or $v1,$v0,$zero
|
||||
.L0004ca94:
|
||||
/* 4ca94: 8e4e0054 */ lw $t6,0x54($s2)
|
||||
/* 4ca98: 8e440004 */ lw $a0,0x4($s2)
|
||||
/* 4ca9c: 02203825 */ or $a3,$s1,$zero
|
||||
/* 4caa0: 01d36821 */ addu $t5,$t6,$s3
|
||||
/* 4caa4: 01b03021 */ addu $a2,$t5,$s0
|
||||
/* 4caa8: 30cfffff */ andi $t7,$a2,0xffff
|
||||
/* 4caac: 0c012e18 */ jal __osContRamRead
|
||||
/* 4cab0: 01e03025 */ or $a2,$t7,$zero
|
||||
/* 4cab4: 00401825 */ or $v1,$v0,$zero
|
||||
.L0004cab8:
|
||||
/* 4cab8: 10400003 */ beqz $v0,.L0004cac8
|
||||
/* 4cabc: 26100001 */ addiu $s0,$s0,0x1
|
||||
/* 4cac0: 10000049 */ b .L0004cbe8
|
||||
/* 4cac4: 00601025 */ or $v0,$v1,$zero
|
||||
.L0004cac8:
|
||||
/* 4cac8: 2a010008 */ slti $at,$s0,0x8
|
||||
/* 4cacc: 1420ffd9 */ bnez $at,.L0004ca34
|
||||
/* 4cad0: 26310020 */ addiu $s1,$s1,0x20
|
||||
/* 4cad4: 16800038 */ bnez $s4,.L0004cbb8
|
||||
/* 4cad8: 8fb90048 */ lw $t9,0x48($sp)
|
||||
/* 4cadc: 8fb8005c */ lw $t8,0x5c($sp)
|
||||
/* 4cae0: 00192823 */ negu $a1,$t9
|
||||
/* 4cae4: 00054840 */ sll $t1,$a1,0x1
|
||||
/* 4cae8: 00194040 */ sll $t0,$t9,0x1
|
||||
/* 4caec: 25250100 */ addiu $a1,$t1,0x100
|
||||
/* 4caf0: 0308a021 */ addu $s4,$t8,$t0
|
||||
/* 4caf4: 02802025 */ or $a0,$s4,$zero
|
||||
/* 4caf8: 0c013024 */ jal __osSumCalc
|
||||
/* 4cafc: afa5003c */ sw $a1,0x3c($sp)
|
||||
/* 4cb00: 8fab005c */ lw $t3,0x5c($sp)
|
||||
/* 4cb04: 304a00ff */ andi $t2,$v0,0xff
|
||||
/* 4cb08: 00008025 */ or $s0,$zero,$zero
|
||||
/* 4cb0c: 916c0001 */ lbu $t4,0x1($t3)
|
||||
/* 4cb10: 01608825 */ or $s1,$t3,$zero
|
||||
/* 4cb14: 514c0029 */ beql $t2,$t4,.L0004cbbc
|
||||
/* 4cb18: 93ab0067 */ lbu $t3,0x67($sp)
|
||||
.L0004cb1c:
|
||||
/* 4cb1c: 8e4e0058 */ lw $t6,0x58($s2)
|
||||
/* 4cb20: 8e440004 */ lw $a0,0x4($s2)
|
||||
/* 4cb24: 8e450008 */ lw $a1,0x8($s2)
|
||||
/* 4cb28: 01d36821 */ addu $t5,$t6,$s3
|
||||
/* 4cb2c: 01b03021 */ addu $a2,$t5,$s0
|
||||
/* 4cb30: 30cfffff */ andi $t7,$a2,0xffff
|
||||
/* 4cb34: 01e03025 */ or $a2,$t7,$zero
|
||||
/* 4cb38: 0c012e18 */ jal __osContRamRead
|
||||
/* 4cb3c: 02203825 */ or $a3,$s1,$zero
|
||||
/* 4cb40: 26100001 */ addiu $s0,$s0,0x1
|
||||
/* 4cb44: 2a010008 */ slti $at,$s0,0x8
|
||||
/* 4cb48: 1420fff4 */ bnez $at,.L0004cb1c
|
||||
/* 4cb4c: 26310020 */ addiu $s1,$s1,0x20
|
||||
/* 4cb50: 02802025 */ or $a0,$s4,$zero
|
||||
/* 4cb54: 0c013024 */ jal __osSumCalc
|
||||
/* 4cb58: 8fa5003c */ lw $a1,0x3c($sp)
|
||||
/* 4cb5c: 8fa8005c */ lw $t0,0x5c($sp)
|
||||
/* 4cb60: 305800ff */ andi $t8,$v0,0xff
|
||||
/* 4cb64: 00008025 */ or $s0,$zero,$zero
|
||||
/* 4cb68: 91190001 */ lbu $t9,0x1($t0)
|
||||
/* 4cb6c: 8fb1005c */ lw $s1,0x5c($sp)
|
||||
/* 4cb70: 13190003 */ beq $t8,$t9,.L0004cb80
|
||||
/* 4cb74: 00000000 */ nop
|
||||
/* 4cb78: 1000001b */ b .L0004cbe8
|
||||
/* 4cb7c: 24020003 */ addiu $v0,$zero,0x3
|
||||
.L0004cb80:
|
||||
/* 4cb80: 8e490054 */ lw $t1,0x54($s2)
|
||||
/* 4cb84: 8e440004 */ lw $a0,0x4($s2)
|
||||
/* 4cb88: 8e450008 */ lw $a1,0x8($s2)
|
||||
/* 4cb8c: 01335021 */ addu $t2,$t1,$s3
|
||||
/* 4cb90: 01503021 */ addu $a2,$t2,$s0
|
||||
/* 4cb94: 30ccffff */ andi $t4,$a2,0xffff
|
||||
/* 4cb98: 01803025 */ or $a2,$t4,$zero
|
||||
/* 4cb9c: afa00010 */ sw $zero,0x10($sp)
|
||||
/* 4cba0: 0c012d84 */ jal __osContRamWrite
|
||||
/* 4cba4: 02203825 */ or $a3,$s1,$zero
|
||||
/* 4cba8: 26100001 */ addiu $s0,$s0,0x1
|
||||
/* 4cbac: 24010008 */ addiu $at,$zero,0x8
|
||||
/* 4cbb0: 1601fff3 */ bne $s0,$at,.L0004cb80
|
||||
/* 4cbb4: 26310020 */ addiu $s1,$s1,0x20
|
||||
.L0004cbb8:
|
||||
/* 4cbb8: 93ab0067 */ lbu $t3,0x67($sp)
|
||||
.L0004cbbc:
|
||||
/* 4cbbc: 3c018006 */ lui $at,%hi(var80060984)
|
||||
/* 4cbc0: 3c05800a */ lui $a1,%hi(var8009c870)
|
||||
/* 4cbc4: 24a5c870 */ addiu $a1,$a1,%lo(var8009c870)
|
||||
/* 4cbc8: 8fa4005c */ lw $a0,0x5c($sp)
|
||||
/* 4cbcc: 24060100 */ addiu $a2,$zero,0x100
|
||||
/* 4cbd0: 0c012c5c */ jal bcopy
|
||||
/* 4cbd4: a02b0984 */ sb $t3,%lo(var80060984)($at)
|
||||
/* 4cbd8: 8e4e0008 */ lw $t6,0x8($s2)
|
||||
/* 4cbdc: 3c018006 */ lui $at,%hi(var80060980)
|
||||
/* 4cbe0: 00001025 */ or $v0,$zero,$zero
|
||||
/* 4cbe4: ac2e0980 */ sw $t6,%lo(var80060980)($at)
|
||||
.L0004cbe8:
|
||||
/* 4cbe8: 8fbf0034 */ lw $ra,0x34($sp)
|
||||
.L0004cbec:
|
||||
/* 4cbec: 8fb00020 */ lw $s0,0x20($sp)
|
||||
/* 4cbf0: 8fb10024 */ lw $s1,0x24($sp)
|
||||
/* 4cbf4: 8fb20028 */ lw $s2,0x28($sp)
|
||||
/* 4cbf8: 8fb3002c */ lw $s3,0x2c($sp)
|
||||
/* 4cbfc: 8fb40030 */ lw $s4,0x30($sp)
|
||||
/* 4cc00: 03e00008 */ jr $ra
|
||||
/* 4cc04: 27bd0058 */ addiu $sp,$sp,0x58
|
||||
);
|
||||
s32 __osPfsRWInode(OSPfs *pfs, __OSInode *inode, u8 flag, u8 bank)
|
||||
{
|
||||
u8 sum;
|
||||
int j;
|
||||
s32 ret;
|
||||
int offset;
|
||||
u8 *addr;
|
||||
static __OSInode prevnode;
|
||||
|
||||
if (flag == 0 && bank == g_PfsPrevBank && pfs->channel == g_PfsPrevChannel) {
|
||||
bcopy(&prevnode, inode, sizeof(__OSInode));
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (pfs->activebank != 0) {
|
||||
ERRCK(__osPfsSelectBank(pfs, 0));
|
||||
}
|
||||
|
||||
offset = (bank > 0) ? 1 : pfs->inode_start_page;
|
||||
|
||||
if (flag == PFS_WRITE) {
|
||||
inode->inode_page[0].inode_t.page = __osSumCalc((u8*)&inode->inode_page[offset], (-offset) * 2 + 256);
|
||||
}
|
||||
|
||||
for (j = 0; j < 8; j++) {
|
||||
addr = ((u8 *)inode->inode_page + j * 32);
|
||||
|
||||
if (flag == PFS_WRITE) {
|
||||
ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->inode_table + bank * 8 + j, addr, FALSE);
|
||||
ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->minode_table + bank * 8 + j, addr, FALSE);
|
||||
} else {
|
||||
ret = __osContRamRead(pfs->queue, pfs->channel, pfs->inode_table + bank * 8 + j, addr);
|
||||
}
|
||||
|
||||
if (ret != 0) {
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
if (flag == PFS_READ) {
|
||||
sum = __osSumCalc((u8*)&inode->inode_page[offset], (-offset) * 2 + 256);
|
||||
|
||||
if (sum != inode->inode_page[0].inode_t.page) {
|
||||
for (j = 0; j < PFS_ONE_PAGE; j++) {
|
||||
addr = ((u8 *)inode->inode_page + j * 32);
|
||||
ret = __osContRamRead(pfs->queue, pfs->channel, pfs->minode_table + bank * PFS_ONE_PAGE + j, addr);
|
||||
}
|
||||
|
||||
sum = __osSumCalc((u8*)&inode->inode_page[offset], (-offset) * 2 + 256);
|
||||
|
||||
if (sum != inode->inode_page[0].inode_t.page) {
|
||||
return PFS_ERR_INCONSISTENT;
|
||||
}
|
||||
|
||||
for (j = 0; j < PFS_ONE_PAGE; j++) {
|
||||
addr = ((u8 *)inode->inode_page + j * 32);
|
||||
ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->inode_table + bank * PFS_ONE_PAGE + j, addr, FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
g_PfsPrevBank = bank;
|
||||
bcopy(inode, &prevnode, sizeof(__OSInode));
|
||||
g_PfsPrevChannel = pfs->channel;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ glabel func0004ce60
|
|||
/* 4ced4: 02802025 */ or $a0,$s4,$zero
|
||||
/* 4ced8: 27a50048 */ addiu $a1,$sp,0x48
|
||||
/* 4cedc: 00003025 */ or $a2,$zero,$zero
|
||||
/* 4cee0: 0c01324d */ jal func0004c934
|
||||
/* 4cee0: 0c01324d */ jal __osPfsRWInode
|
||||
/* 4cee4: 326700ff */ andi $a3,$s3,0xff
|
||||
/* 4cee8: 10400003 */ beqz $v0,.L0004cef8
|
||||
/* 4ceec: 00000000 */ nop
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ glabel func0004d000
|
|||
/* 4d168: 02602025 */ or $a0,$s3,$zero
|
||||
/* 4d16c: 02402825 */ or $a1,$s2,$zero
|
||||
/* 4d170: 00003025 */ or $a2,$zero,$zero
|
||||
/* 4d174: 0c01324d */ jal func0004c934
|
||||
/* 4d174: 0c01324d */ jal __osPfsRWInode
|
||||
/* 4d178: 320700ff */ andi $a3,$s0,0xff
|
||||
/* 4d17c: 10400003 */ beqz $v0,.L0004d18c
|
||||
/* 4d180: 02602025 */ or $a0,$s3,$zero
|
||||
|
|
@ -152,7 +152,7 @@ glabel func0004d000
|
|||
/* 4d1ec: 02602025 */ or $a0,$s3,$zero
|
||||
/* 4d1f0: 02202825 */ or $a1,$s1,$zero
|
||||
/* 4d1f4: 24060001 */ addiu $a2,$zero,0x1
|
||||
/* 4d1f8: 0c01324d */ jal func0004c934
|
||||
/* 4d1f8: 0c01324d */ jal __osPfsRWInode
|
||||
/* 4d1fc: 32e700ff */ andi $a3,$s7,0xff
|
||||
/* 4d200: 50400004 */ beqzl $v0,.L0004d214
|
||||
/* 4d204: 8fa80290 */ lw $t0,0x290($sp)
|
||||
|
|
@ -179,7 +179,7 @@ glabel func0004d000
|
|||
/* 4d24c: 02602025 */ or $a0,$s3,$zero
|
||||
/* 4d250: 02402825 */ or $a1,$s2,$zero
|
||||
/* 4d254: 24060001 */ addiu $a2,$zero,0x1
|
||||
/* 4d258: 0c01324d */ jal func0004c934
|
||||
/* 4d258: 0c01324d */ jal __osPfsRWInode
|
||||
/* 4d25c: 320700ff */ andi $a3,$s0,0xff
|
||||
/* 4d260: 10400009 */ beqz $v0,.L0004d288
|
||||
/* 4d264: 00000000 */ nop
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ glabel func0004d480
|
|||
.L0004d564:
|
||||
/* 4d564: 02202825 */ or $a1,$s1,$zero
|
||||
/* 4d568: 00003025 */ or $a2,$zero,$zero
|
||||
/* 4d56c: 0c01324d */ jal func0004c934
|
||||
/* 4d56c: 0c01324d */ jal __osPfsRWInode
|
||||
/* 4d570: 320700ff */ andi $a3,$s0,0xff
|
||||
/* 4d574: 10400003 */ beqz $v0,.L0004d584
|
||||
/* 4d578: 02402025 */ or $a0,$s2,$zero
|
||||
|
|
@ -94,7 +94,7 @@ glabel func0004d480
|
|||
.L0004d5a8:
|
||||
/* 4d5a8: 02202825 */ or $a1,$s1,$zero
|
||||
/* 4d5ac: 24060001 */ addiu $a2,$zero,0x1
|
||||
/* 4d5b0: 0c01324d */ jal func0004c934
|
||||
/* 4d5b0: 0c01324d */ jal __osPfsRWInode
|
||||
/* 4d5b4: 320700ff */ andi $a3,$s0,0xff
|
||||
/* 4d5b8: 10400003 */ beqz $v0,.L0004d5c8
|
||||
/* 4d5bc: 97ac0044 */ lhu $t4,0x44($sp)
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ glabel osPfsChecker
|
|||
/* 4d844: 02602025 */ or $a0,$s3,$zero
|
||||
/* 4d848: 02a02825 */ or $a1,$s5,$zero
|
||||
/* 4d84c: 00003025 */ or $a2,$zero,$zero
|
||||
/* 4d850: 0c01324d */ jal func0004c934
|
||||
/* 4d850: 0c01324d */ jal __osPfsRWInode
|
||||
/* 4d854: 332700ff */ andi $a3,$t9,0xff
|
||||
/* 4d858: 0040b825 */ or $s7,$v0,$zero
|
||||
/* 4d85c: 32de00ff */ andi $s8,$s6,0xff
|
||||
|
|
@ -242,7 +242,7 @@ glabel osPfsChecker
|
|||
/* 4da24: 02602025 */ or $a0,$s3,$zero
|
||||
/* 4da28: 02a02825 */ or $a1,$s5,$zero
|
||||
/* 4da2c: 00003025 */ or $a2,$zero,$zero
|
||||
/* 4da30: 0c01324d */ jal func0004c934
|
||||
/* 4da30: 0c01324d */ jal __osPfsRWInode
|
||||
/* 4da34: 32c700ff */ andi $a3,$s6,0xff
|
||||
/* 4da38: 10400006 */ beqz $v0,.L0004da54
|
||||
/* 4da3c: 27a804bc */ addiu $t0,$sp,0x4bc
|
||||
|
|
@ -346,7 +346,7 @@ glabel osPfsChecker
|
|||
/* 4db90: 5420ffe3 */ bnezl $at,.L0004db20
|
||||
/* 4db94: 90990000 */ lbu $t9,0x0($a0)
|
||||
.L0004db98:
|
||||
/* 4db98: 0c01324d */ jal func0004c934
|
||||
/* 4db98: 0c01324d */ jal __osPfsRWInode
|
||||
/* 4db9c: 02602025 */ or $a0,$s3,$zero
|
||||
/* 4dba0: 50400004 */ beqzl $v0,.L0004dbb4
|
||||
/* 4dba4: 926d0064 */ lbu $t5,0x64($s3)
|
||||
|
|
@ -435,7 +435,7 @@ glabel func0004dc28
|
|||
.L0004dcc0:
|
||||
/* 4dcc0: 02a02825 */ or $a1,$s5,$zero
|
||||
/* 4dcc4: 00003025 */ or $a2,$zero,$zero
|
||||
/* 4dcc8: 0c01324d */ jal func0004c934
|
||||
/* 4dcc8: 0c01324d */ jal __osPfsRWInode
|
||||
/* 4dccc: 32e700ff */ andi $a3,$s7,0xff
|
||||
/* 4dcd0: 10400005 */ beqz $v0,.L0004dce8
|
||||
/* 4dcd4: 24010003 */ addiu $at,$zero,0x3
|
||||
|
|
@ -660,7 +660,7 @@ glabel func0004def4
|
|||
/* 4dfc0: 02602825 */ or $a1,$s3,$zero
|
||||
/* 4dfc4: 11e2000a */ beq $t7,$v0,.L0004dff0
|
||||
/* 4dfc8: 00003025 */ or $a2,$zero,$zero
|
||||
/* 4dfcc: 0c01324d */ jal func0004c934
|
||||
/* 4dfcc: 0c01324d */ jal __osPfsRWInode
|
||||
/* 4dfd0: 324700ff */ andi $a3,$s2,0xff
|
||||
/* 4dfd4: 50400006 */ beqzl $v0,.L0004dff0
|
||||
/* 4dfd8: a2720100 */ sb $s2,0x100($s3)
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ glabel func00050480
|
|||
/* 504ac: a0a20000 */ sb $v0,0x0($a1)
|
||||
/* 504b0: 91c70000 */ lbu $a3,0x0($t6)
|
||||
/* 504b4: afa40020 */ sw $a0,0x20($sp)
|
||||
/* 504b8: 0c01324d */ jal func0004c934
|
||||
/* 504b8: 0c01324d */ jal __osPfsRWInode
|
||||
/* 504bc: 8fa50028 */ lw $a1,0x28($sp)
|
||||
/* 504c0: 10400003 */ beqz $v0,.L000504d0
|
||||
/* 504c4: 8fa40020 */ lw $a0,0x20($sp)
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ glabel func00050a00
|
|||
/* 50b1c: 12190008 */ beq $s0,$t9,.L00050b40
|
||||
/* 50b20: 00003025 */ or $a2,$zero,$zero
|
||||
/* 50b24: 03208025 */ or $s0,$t9,$zero
|
||||
/* 50b28: 0c01324d */ jal func0004c934
|
||||
/* 50b28: 0c01324d */ jal __osPfsRWInode
|
||||
/* 50b2c: 332700ff */ andi $a3,$t9,0xff
|
||||
/* 50b30: 50400004 */ beqzl $v0,.L00050b44
|
||||
/* 50b34: 93a80035 */ lbu $t0,0x35($sp)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ s32 __osPfsGetStatus(OSMesgQueue *queue, int channel)
|
|||
OSContStatus data;
|
||||
|
||||
ret = 0;
|
||||
var80060984 = 0xfa;
|
||||
g_PfsPrevBank = 0xfa;
|
||||
|
||||
__osPfsRequestOneChannel(channel, CONT_CMD_REQUEST_STATUS);
|
||||
ret = __osSiRawStartDma(OS_WRITE, &__osPfsPifRam);
|
||||
|
|
|
|||
Loading…
Reference in New Issue