migrate os_mutex to c

This commit is contained in:
Seth Barberee
2026-06-07 16:55:08 -07:00
parent 62795d5f59
commit 49532ea023
40 changed files with 395 additions and 431 deletions

View File

@@ -8,7 +8,7 @@
.public _020A2CF8
.public _022A88F0
.public _022A88FC
.public _022B966C
.public OSi_ThreadInfo
.public OSi_IsInitReset
.public CP_SaveContext
.public CPi_RestoreContext

View File

@@ -12,7 +12,7 @@
.public _0229B0F8
.public _0229B110
.public _0229B114
.public _022B966C
.public OSi_ThreadInfo
.public Card_LockBackup
.public Card_LockRom
.public Card_SetPulledOutCallback

View File

@@ -23,7 +23,7 @@
.public _022B961C
.public _022B9644
.public OSi_IsThreadInitialized
.public _022B966C
.public OSi_ThreadInfo
.public _022B9670
.public _022B967C
.public _022B973C

View File

@@ -12,7 +12,7 @@
.public _020B2ED4
.public _020B2FBC
.public _020B3364
.public _022B966C
.public OSi_ThreadInfo
.public _022BB5EC
.public _022BB5FC
.public _022BB604

View File

@@ -16,7 +16,7 @@
.public _020B3218
.public _020B321C
.public _020B3220
.public _022B966C
.public OSi_ThreadInfo
.public _022BC650
.public _022BC674
.public _022BC698

View File

@@ -6,7 +6,7 @@
.public _020AECB0
.public _020AED30
.public _020AEDB0
.public _022B966C
.public OSi_ThreadInfo
.public _022BCA70
.public _d2f
.public _dadd

View File

@@ -1841,11 +1841,11 @@ _01FF9668:
ldr ip, _01FF97BC ; =DTCM_BSS
str r3, [ip]
str r3, [ip, #4]
ldr ip, _01FF97C0 ; =_022B966C
ldr ip, _01FF97C0 ; =OSi_ThreadInfo
mov r1, #1
strh r1, [ip]
_01FF96A0:
ldr ip, _01FF97C0 ; =_022B966C
ldr ip, _01FF97C0 ; =OSi_ThreadInfo
ldrh r1, [ip]
cmp r1, #0
beq _01FF96B4
@@ -1931,7 +1931,7 @@ _01FF9738:
ldmia sp!, {pc}
.align 2, 0
_01FF97BC: .word DTCM_BSS
_01FF97C0: .word _022B966C
_01FF97C0: .word OSi_ThreadInfo
_01FF97C4: .word CP_SaveContext
_01FF97C8: .word CPi_RestoreContext
arm_func_end ReturnFromInterrupt

View File

@@ -234,7 +234,7 @@ _02002504:
str r2, [r1, #4]
str r2, [r1, #8]
bl OS_UnlockMutex
ldr r1, _02002578 ; =_022B966C
ldr r1, _02002578 ; =OSi_ThreadInfo
ldr r0, _0200257C ; =_0229B004
ldr r1, [r1, #4]
mov r2, #0
@@ -245,7 +245,7 @@ _02002504:
str r1, [r0, #0x10]
str r2, [r0, #0x14]
bl sub_020026E4
ldr r0, _02002578 ; =_022B966C
ldr r0, _02002578 ; =OSi_ThreadInfo
mov r1, #7
ldr r0, [r0, #4]
bl OS_SetThreadPriority
@@ -254,14 +254,14 @@ _02002504:
_0200256C: .word _0229AFCC
_02002570: .word _0229AFE4
_02002574: .word _0229AFC0
_02002578: .word _022B966C
_02002578: .word OSi_ThreadInfo
_0200257C: .word _0229B004
arm_func_end sub_020024E4
arm_func_start sub_02002580
sub_02002580: ; 0x02002580
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _020025E8 ; =_022B966C
ldr r1, _020025E8 ; =OSi_ThreadInfo
ldr r0, _020025EC ; =_0229AFCC
ldr r4, [r1, #4]
bl OS_LockMutex
@@ -291,7 +291,7 @@ _020025E0:
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020025E8: .word _022B966C
_020025E8: .word OSi_ThreadInfo
_020025EC: .word _0229AFCC
_020025F0: .word _0229AFC0
_020025F4: .word _0229AFE4
@@ -323,7 +323,7 @@ sub_02002624: ; 0x02002624
arm_func_start sub_02002628
sub_02002628: ; 0x02002628
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _02002658 ; =_022B966C
ldr r2, _02002658 ; =OSi_ThreadInfo
mov r5, r0
ldr r0, [r2, #4]
mov r4, r1
@@ -335,7 +335,7 @@ sub_02002628: ; 0x02002628
bl OS_SetThreadPriority
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02002658: .word _022B966C
_02002658: .word OSi_ThreadInfo
arm_func_end sub_02002628
arm_func_start sub_0200265C
@@ -351,7 +351,7 @@ _0200266C: .word OS_SetThreadPriority
arm_func_start sub_02002670
sub_02002670: ; 0x02002670
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _020026AC ; =_022B966C
ldr r0, _020026AC ; =OSi_ThreadInfo
ldr r5, [r0, #4]
mov r0, r5
bl OS_GetThreadPriority
@@ -366,7 +366,7 @@ sub_02002670: ; 0x02002670
str r4, [r0, #4]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020026AC: .word _022B966C
_020026AC: .word OSi_ThreadInfo
_020026B0: .word _0229AFCC
_020026B4: .word _020AEF30
arm_func_end sub_02002670
@@ -390,7 +390,7 @@ _020026E0: .word _0229AFCC
arm_func_start sub_020026E4
sub_020026E4: ; 0x020026E4
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _02002768 ; =_022B966C
ldr r1, _02002768 ; =OSi_ThreadInfo
mov r6, r0
ldr r5, [r1, #4]
mov r0, r5
@@ -424,7 +424,7 @@ _02002750:
bl OS_SetThreadPriority
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02002768: .word _022B966C
_02002768: .word OSi_ThreadInfo
_0200276C: .word _0229AFCC
_02002770: .word _0229AFC0
_02002774: .word _0229AFE4
@@ -489,7 +489,7 @@ sub_020027F8: ; 0x020027F8
arm_func_start sub_02002824
sub_02002824: ; 0x02002824
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _02002854 ; =_022B966C
ldr r1, _02002854 ; =OSi_ThreadInfo
mov r6, r0
ldr r5, [r1, #4]
mov r0, r5
@@ -501,7 +501,7 @@ sub_02002824: ; 0x02002824
mov r0, r4
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02002854: .word _022B966C
_02002854: .word OSi_ThreadInfo
arm_func_end sub_02002824
arm_func_start sub_02002858
@@ -646,7 +646,7 @@ _020029B4: .word OS_SendMessage
arm_func_start sub_020029B8
sub_020029B8: ; 0x020029B8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r1, _02002A40 ; =_022B966C
ldr r1, _02002A40 ; =OSi_ThreadInfo
mov r4, r0
ldr sb, [r1, #4]
mov r7, #0
@@ -683,14 +683,14 @@ _02002A10:
mov r0, r7
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_02002A40: .word _022B966C
_02002A40: .word OSi_ThreadInfo
arm_func_end sub_020029B8
arm_func_start sub_02002A44
sub_02002A44: ; 0x02002A44
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
ldr r1, _02002A94 ; =_022B966C
ldr r1, _02002A94 ; =OSi_ThreadInfo
mov r6, r0
ldr r5, [r1, #4]
mov r0, r5
@@ -709,7 +709,7 @@ sub_02002A44: ; 0x02002A44
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02002A94: .word _022B966C
_02002A94: .word OSi_ThreadInfo
arm_func_end sub_02002A44
arm_func_start sub_02002A98
@@ -798,7 +798,7 @@ sub_02002B50: ; 0x02002B50
sub_02002B7C: ; 0x02002B7C
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
ldr r1, _02002BCC ; =_022B966C
ldr r1, _02002BCC ; =OSi_ThreadInfo
mov r6, r0
ldr r5, [r1, #4]
mov r0, r5
@@ -817,14 +817,14 @@ sub_02002B7C: ; 0x02002B7C
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02002BCC: .word _022B966C
_02002BCC: .word OSi_ThreadInfo
arm_func_end sub_02002B7C
arm_func_start sub_02002BD0
sub_02002BD0: ; 0x02002BD0
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
ldr r1, _02002C28 ; =_022B966C
ldr r1, _02002C28 ; =OSi_ThreadInfo
mov r5, r0
ldr r6, [r1, #4]
mov r0, r6
@@ -845,7 +845,7 @@ sub_02002BD0: ; 0x02002BD0
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02002C28: .word _022B966C
_02002C28: .word OSi_ThreadInfo
arm_func_end sub_02002BD0
arm_func_start sub_02002C2C
@@ -861,7 +861,7 @@ _02002C3C: .word _0229B0F8
arm_func_start sub_02002C40
sub_02002C40: ; 0x02002C40
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _02002CA4 ; =_022B966C
ldr r1, _02002CA4 ; =OSi_ThreadInfo
mov r6, r0
ldr r5, [r1, #4]
mov r0, r5
@@ -886,7 +886,7 @@ sub_02002C40: ; 0x02002C40
bl OS_SetThreadPriority
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02002CA4: .word _022B966C
_02002CA4: .word OSi_ThreadInfo
_02002CA8: .word _0229B0F8
arm_func_end sub_02002C40
@@ -899,7 +899,7 @@ sub_02002CAC: ; 0x02002CAC
arm_func_start sub_02002CB4
sub_02002CB4: ; 0x02002CB4
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _02002D10 ; =_022B966C
ldr r1, _02002D10 ; =OSi_ThreadInfo
mov r6, r0
ldr r5, [r1, #4]
mov r0, r5
@@ -924,13 +924,13 @@ _02002CF8:
str r0, [r6, #0x18]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02002D10: .word _022B966C
_02002D10: .word OSi_ThreadInfo
arm_func_end sub_02002CB4
arm_func_start sub_02002D14
sub_02002D14: ; 0x02002D14
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _02002D7C ; =_022B966C
ldr r2, _02002D7C ; =OSi_ThreadInfo
mov r7, r0
ldr r5, [r2, #4]
mov r6, r1
@@ -958,7 +958,7 @@ _02002D5C:
str r0, [r7, #0x18]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02002D7C: .word _022B966C
_02002D7C: .word OSi_ThreadInfo
arm_func_end sub_02002D14
arm_func_start sub_02002D80
@@ -1008,7 +1008,7 @@ _02002E08:
arm_func_start sub_02002E10
sub_02002E10: ; 0x02002E10
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _02002E94 ; =_022B966C
ldr r1, _02002E94 ; =OSi_ThreadInfo
mov r6, r0
ldr r5, [r1, #4]
mov r0, r5
@@ -1045,7 +1045,7 @@ _02002E8C:
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02002E94: .word _022B966C
_02002E94: .word OSi_ThreadInfo
arm_func_end sub_02002E10
arm_func_start sub_02002E98

View File

@@ -21,7 +21,7 @@ fread: ; 0x020866B4
bl OS_TryLockMutex
cmp r0, #0
bne _02086718
ldr r0, _020867B4 ; =_022B966C
ldr r0, _020867B4 ; =OSi_ThreadInfo
ldr r2, _020867B8 ; =_022BC650
ldr r1, [r0, #4]
ldr r0, _020867BC ; =_022BC674
@@ -31,7 +31,7 @@ fread: ; 0x020866B4
str r1, [r0, r6, lsl #2]
b _02086770
_02086718:
ldr r0, _020867B4 ; =_022B966C
ldr r0, _020867B4 ; =OSi_ThreadInfo
ldr r1, _020867B8 ; =_022BC650
ldr r0, [r0, #4]
ldr r1, [r1, r6, lsl #2]
@@ -46,7 +46,7 @@ _02086718:
_02086748:
add r0, r5, r4
bl OS_LockMutex
ldr r0, _020867B4 ; =_022B966C
ldr r0, _020867B4 ; =OSi_ThreadInfo
ldr r2, _020867B8 ; =_022BC650
ldr r1, [r0, #4]
ldr r0, _020867BC ; =_022BC674
@@ -74,7 +74,7 @@ _020867A4:
.align 2, 0
_020867AC: .word _020B2ED4
_020867B0: .word _022BC698
_020867B4: .word _022B966C
_020867B4: .word OSi_ThreadInfo
_020867B8: .word _022BC650
_020867BC: .word _022BC674
arm_func_end fread
@@ -516,7 +516,7 @@ _02086DA0:
bl OS_TryLockMutex
cmp r0, #0
bne _02086DE0
ldr r0, _02086E78 ; =_022B966C
ldr r0, _02086E78 ; =OSi_ThreadInfo
ldr r2, _02086E7C ; =_022BC650
ldr r1, [r0, #4]
ldr r0, _02086E80 ; =_022BC674
@@ -526,7 +526,7 @@ _02086DA0:
str r1, [r0, r6, lsl #2]
b _02086E38
_02086DE0:
ldr r0, _02086E78 ; =_022B966C
ldr r0, _02086E78 ; =OSi_ThreadInfo
ldr r1, _02086E7C ; =_022BC650
ldr r0, [r0, #4]
ldr r1, [r1, r6, lsl #2]
@@ -541,7 +541,7 @@ _02086DE0:
_02086E10:
add r0, r5, r4
bl OS_LockMutex
ldr r0, _02086E78 ; =_022B966C
ldr r0, _02086E78 ; =OSi_ThreadInfo
ldr r2, _02086E7C ; =_022BC650
ldr r1, [r0, #4]
ldr r0, _02086E80 ; =_022BC674
@@ -568,7 +568,7 @@ _02086E68: .word _020B2ED4
_02086E6C: .word _020B2F20
_02086E70: .word _020B2F6C
_02086E74: .word _022BC698
_02086E78: .word _022B966C
_02086E78: .word OSi_ThreadInfo
_02086E7C: .word _022BC650
_02086E80: .word _022BC674
arm_func_end ftell
@@ -735,7 +735,7 @@ _020870AC:
bl OS_TryLockMutex
cmp r0, #0
bne _020870EC
ldr r0, _0208718C ; =_022B966C
ldr r0, _0208718C ; =OSi_ThreadInfo
ldr r2, _02087190 ; =_022BC650
ldr r1, [r0, #4]
ldr r0, _02087194 ; =_022BC674
@@ -745,7 +745,7 @@ _020870AC:
str r1, [r0, r6, lsl #2]
b _02087144
_020870EC:
ldr r0, _0208718C ; =_022B966C
ldr r0, _0208718C ; =OSi_ThreadInfo
ldr r1, _02087190 ; =_022BC650
ldr r0, [r0, #4]
ldr r1, [r1, r6, lsl #2]
@@ -760,7 +760,7 @@ _020870EC:
_0208711C:
add r0, r5, r4
bl OS_LockMutex
ldr r0, _0208718C ; =_022B966C
ldr r0, _0208718C ; =OSi_ThreadInfo
ldr r2, _02087190 ; =_022BC650
ldr r1, [r0, #4]
ldr r0, _02087194 ; =_022BC674
@@ -789,7 +789,7 @@ _0208717C: .word _020B2ED4
_02087180: .word _020B2F20
_02087184: .word _020B2F6C
_02087188: .word _022BC698
_0208718C: .word _022B966C
_0208718C: .word OSi_ThreadInfo
_02087190: .word _022BC650
_02087194: .word _022BC674
arm_func_end fseek

View File

@@ -237,8 +237,8 @@ THREAD_INFO_STRUCT:
.global OSi_IsThreadInitialized
OSi_IsThreadInitialized:
.space 0x18
.global _022B966C
_022B966C:
.global OSi_ThreadInfo
OSi_ThreadInfo:
.space 0x4
.global _022B9670
_022B9670:

View File

@@ -14166,7 +14166,7 @@ reset_network_vars: ; 0x022C8134
ldr r0, _022C822C ; =ov00_023250F8
mov r2, #0x60
bl MI_CpuFill8
ldr r0, _022C8230 ; =_022B966C
ldr r0, _022C8230 ; =OSi_ThreadInfo
ldr r6, [r0, #8]
cmp r6, #0
beq _022C81E4
@@ -14215,7 +14215,7 @@ _022C8210:
.align 2, 0
_022C8228: .word ov00_02325078
_022C822C: .word ov00_023250F8
_022C8230: .word _022B966C
_022C8230: .word OSi_ThreadInfo
_022C8234: .word ov00_023253A0
arm_func_end reset_network_vars
@@ -14902,7 +14902,7 @@ receive_packet: ; 0x022C8ACC
cmp r1, r0
bne _022C8B20
mov r5, #0
ldr r8, _022C8B88 ; =_022B966C
ldr r8, _022C8B88 ; =OSi_ThreadInfo
mov r4, r5
_022C8AFC:
ldr r1, [r8, #4]
@@ -14943,7 +14943,7 @@ _022C8B38:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_022C8B84: .word ov00_02325078
_022C8B88: .word _022B966C
_022C8B88: .word OSi_ThreadInfo
arm_func_end receive_packet
arm_func_start throw_packet
@@ -15509,7 +15509,7 @@ send_ping: ; 0x022C9338
mov r6, r1
mov r1, #8
ldr r3, _022C93E0 ; =ov00_02325078
ldr r2, _022C93E4 ; =_022B966C
ldr r2, _022C93E4 ; =OSi_ThreadInfo
strh r1, [r4, #0x22]
ldr r2, [r2, #4]
ldrh lr, [r3, #4]
@@ -15546,7 +15546,7 @@ send_ping: ; 0x022C9338
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_022C93E0: .word ov00_02325078
_022C93E4: .word _022B966C
_022C93E4: .word OSi_ThreadInfo
arm_func_end send_ping
arm_func_start send_udp
@@ -15645,7 +15645,7 @@ send_tcp: ; 0x022C9524
mov r6, r3
addeq sp, sp, #8
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
ldr r0, _022C9788 ; =_022B966C
ldr r0, _022C9788 ; =OSi_ThreadInfo
ldr r1, _022C978C ; =ov00_023252E0
ldr r0, [r0, #4]
cmp r0, r1
@@ -15790,7 +15790,7 @@ _022C9708:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_022C9788: .word _022B966C
_022C9788: .word OSi_ThreadInfo
_022C978C: .word ov00_023252E0
_022C9790: .word ov00_0232558A
_022C9794: .word ov00_02325078
@@ -16000,7 +16000,7 @@ process_icmp_reply: ; 0x022C9A68
mov r7, r1
mov r6, r2
bl EnableIrqFlag
ldr r1, _022C9B64 ; =_022B966C
ldr r1, _022C9B64 ; =OSi_ThreadInfo
mov r5, r0
ldr r1, [r1, #8]
cmp r1, #0
@@ -16062,7 +16062,7 @@ _022C9B58:
bl SetIrqFlag
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_022C9B64: .word _022B966C
_022C9B64: .word OSi_ThreadInfo
arm_func_end process_icmp_reply
arm_func_start valid_ip
@@ -16139,7 +16139,7 @@ _022C9C54: .word 0x0000FFFF
arm_func_start check_listener
check_listener: ; 0x022C9C58
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _022C9D28 ; =_022B966C
ldr r2, _022C9D28 ; =OSi_ThreadInfo
ldr ip, [r2, #8]
cmp ip, #0
beq _022C9D20
@@ -16196,7 +16196,7 @@ _022C9D20:
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022C9D28: .word _022B966C
_022C9D28: .word OSi_ThreadInfo
arm_func_end check_listener
arm_func_start check_socket
@@ -16254,7 +16254,7 @@ _022C9DD8:
arm_func_start find_socket
find_socket: ; 0x022C9DE0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _022C9E40 ; =_022B966C
ldr r2, _022C9E40 ; =OSi_ThreadInfo
mov r7, r0
ldr r5, [r2, #8]
mov r6, r1
@@ -16281,7 +16281,7 @@ _022C9E38:
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_022C9E40: .word _022B966C
_022C9E40: .word OSi_ThreadInfo
arm_func_end find_socket
arm_func_start parse_mss
@@ -16346,7 +16346,7 @@ tcp_send_handshake: ; 0x022C9EE4
bl no_need_inq
cmp r0, #0
bne _022C9F1C
ldr r0, _022C9F50 ; =_022B966C
ldr r0, _022C9F50 ; =OSi_ThreadInfo
ldr r1, _022C9F54 ; =ov00_023252E0
ldr r0, [r0, #4]
cmp r0, r1
@@ -16367,7 +16367,7 @@ _022C9F3C:
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_022C9F50: .word _022B966C
_022C9F50: .word OSi_ThreadInfo
_022C9F54: .word ov00_023252E0
arm_func_end tcp_send_handshake
@@ -17104,7 +17104,7 @@ dispatch_udp: ; 0x022CA940
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_022CA978:
bl EnableIrqFlag
ldr r1, _022CAB48 ; =_022B966C
ldr r1, _022CAB48 ; =OSi_ThreadInfo
mov r5, r0
ldr r1, [r1, #8]
cmp r1, #0
@@ -17227,7 +17227,7 @@ _022CAB3C:
bl SetIrqFlag
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_022CAB48: .word _022B966C
_022CAB48: .word OSi_ThreadInfo
arm_func_end dispatch_udp
arm_func_start check_frag
@@ -17588,7 +17588,7 @@ _022CB048: .word 0x00000806
arm_func_start Cps_SocGetEport
Cps_SocGetEport: ; 0x022CB04C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r0, _022CB0E8 ; =_022B966C
ldr r0, _022CB0E8 ; =OSi_ThreadInfo
ldr r2, _022CB0EC ; =ov00_02325078
ldr r0, [r0, #8]
ldr r1, _022CB0F0 ; =0x00001388
@@ -17633,7 +17633,7 @@ _022CB0D4:
ldrh r0, [r0, #8]
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_022CB0E8: .word _022B966C
_022CB0E8: .word OSi_ThreadInfo
_022CB0EC: .word ov00_02325078
_022CB0F0: .word 0x00001388
arm_func_end Cps_SocGetEport
@@ -17662,28 +17662,28 @@ _022CB134: .word ov00_02325078
arm_func_start Cps_SocRegister
Cps_SocRegister: ; 0x022CB138
ldr r1, _022CB148 ; =_022B966C
ldr r1, _022CB148 ; =OSi_ThreadInfo
ldr r1, [r1, #4]
str r0, [r1, #0xa4]
bx lr
.align 2, 0
_022CB148: .word _022B966C
_022CB148: .word OSi_ThreadInfo
arm_func_end Cps_SocRegister
arm_func_start Cps_SocUnRegister
Cps_SocUnRegister: ; 0x022CB14C
ldr r0, _022CB160 ; =_022B966C
ldr r0, _022CB160 ; =OSi_ThreadInfo
mov r1, #0
ldr r0, [r0, #4]
str r1, [r0, #0xa4]
bx lr
.align 2, 0
_022CB160: .word _022B966C
_022CB160: .word OSi_ThreadInfo
arm_func_end Cps_SocUnRegister
arm_func_start Cps_SocDatagramMode
Cps_SocDatagramMode: ; 0x022CB164
ldr r0, _022CB18C ; =_022B966C
ldr r0, _022CB18C ; =OSi_ThreadInfo
ldr r0, [r0, #4]
ldr r1, [r0, #0xa4]
cmp r1, #0
@@ -17694,13 +17694,13 @@ Cps_SocDatagramMode: ; 0x022CB164
str r0, [r1, #0x44]
bx lr
.align 2, 0
_022CB18C: .word _022B966C
_022CB18C: .word OSi_ThreadInfo
arm_func_end Cps_SocDatagramMode
arm_func_start Cps_SocBind
Cps_SocBind: ; 0x022CB190
stmdb sp!, {r4, lr}
ldr r3, _022CB1E4 ; =_022B966C
ldr r3, _022CB1E4 ; =OSi_ThreadInfo
ldr r3, [r3, #4]
ldr r4, [r3, #0xa4]
cmp r4, #0
@@ -17721,14 +17721,14 @@ Cps_SocBind: ; 0x022CB190
strh r0, [r4, #0xa]
ldmia sp!, {r4, pc}
.align 2, 0
_022CB1E4: .word _022B966C
_022CB1E4: .word OSi_ThreadInfo
_022CB1E8: .word 0x7F000001
_022CB1EC: .word ov00_02325078
arm_func_end Cps_SocBind
arm_func_start Cps_SocUse
Cps_SocUse: ; 0x022CB1F0
ldr r0, _022CB220 ; =_022B966C
ldr r0, _022CB220 ; =OSi_ThreadInfo
ldr r0, [r0, #4]
ldr r1, [r0, #0xa4]
cmp r1, #0
@@ -17741,12 +17741,12 @@ Cps_SocUse: ; 0x022CB1F0
str r0, [r1, #0x38]
bx lr
.align 2, 0
_022CB220: .word _022B966C
_022CB220: .word OSi_ThreadInfo
arm_func_end Cps_SocUse
arm_func_start Cps_SocRelease
Cps_SocRelease: ; 0x022CB224
ldr r0, _022CB240 ; =_022B966C
ldr r0, _022CB240 ; =OSi_ThreadInfo
ldr r0, [r0, #4]
ldr r1, [r0, #0xa4]
cmp r1, #0
@@ -17754,30 +17754,30 @@ Cps_SocRelease: ; 0x022CB224
strne r0, [r1]
bx lr
.align 2, 0
_022CB240: .word _022B966C
_022CB240: .word OSi_ThreadInfo
arm_func_end Cps_SocRelease
arm_func_start Cps_SocDup
Cps_SocDup: ; 0x022CB244
ldr r1, _022CB258 ; =_022B966C
ldr r1, _022CB258 ; =OSi_ThreadInfo
ldr r1, [r1, #4]
ldr r1, [r1, #0xa4]
str r1, [r0, #0xa4]
bx lr
.align 2, 0
_022CB258: .word _022B966C
_022CB258: .word OSi_ThreadInfo
arm_func_end Cps_SocDup
arm_func_start Cps_SetUdpCallback
Cps_SetUdpCallback: ; 0x022CB25C
ldr r1, _022CB274 ; =_022B966C
ldr r1, _022CB274 ; =OSi_ThreadInfo
ldr r1, [r1, #4]
ldr r1, [r1, #0xa4]
cmp r1, #0
strne r0, [r1, #0x38]
bx lr
.align 2, 0
_022CB274: .word _022B966C
_022CB274: .word OSi_ThreadInfo
arm_func_end Cps_SetUdpCallback
arm_func_start Cpsi_TcpConnectRaw
@@ -17836,7 +17836,7 @@ _022CB328: .word ov00_02325078
arm_func_start Cps_TcpConnect
Cps_TcpConnect: ; 0x022CB32C
stmdb sp!, {r3, lr}
ldr r0, _022CB368 ; =_022B966C
ldr r0, _022CB368 ; =OSi_ThreadInfo
ldr r0, [r0, #4]
ldr r0, [r0, #0xa4]
cmp r0, #0
@@ -17853,7 +17853,7 @@ _022CB360:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_022CB368: .word _022B966C
_022CB368: .word OSi_ThreadInfo
arm_func_end Cps_TcpConnect
arm_func_start Cpsi_TcpShutdownRaw
@@ -17884,7 +17884,7 @@ _022CB3A4:
arm_func_start Cps_TcpShutdown
Cps_TcpShutdown: ; 0x022CB3BC
stmdb sp!, {r4, lr}
ldr r0, _022CB3F4 ; =_022B966C
ldr r0, _022CB3F4 ; =OSi_ThreadInfo
ldr r0, [r0, #4]
ldr r4, [r0, #0xa4]
cmp r4, #0
@@ -17899,13 +17899,13 @@ _022CB3E8:
bl Cpsi_TcpShutdownRaw
ldmia sp!, {r4, pc}
.align 2, 0
_022CB3F4: .word _022B966C
_022CB3F4: .word OSi_ThreadInfo
arm_func_end Cps_TcpShutdown
arm_func_start Cps_TcpClose
Cps_TcpClose: ; 0x022CB3F8
stmdb sp!, {r4, r5, r6, lr}
ldr r0, _022CB478 ; =_022B966C
ldr r0, _022CB478 ; =OSi_ThreadInfo
ldr r0, [r0, #4]
ldr r4, [r0, #0xa4]
cmp r4, #0
@@ -17941,7 +17941,7 @@ _022CB46C:
strb r0, [r4, #8]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022CB478: .word _022B966C
_022CB478: .word OSi_ThreadInfo
_022CB47C: .word ov00_02325078
arm_func_end Cps_TcpClose
@@ -18014,7 +18014,7 @@ _022CB538:
arm_func_start Cps_SocRead
Cps_SocRead: ; 0x022CB550
stmdb sp!, {r3, lr}
ldr r1, _022CB5B0 ; =_022B966C
ldr r1, _022CB5B0 ; =OSi_ThreadInfo
ldr r1, [r1, #4]
ldr r1, [r1, #0xa4]
cmp r1, #0
@@ -18041,7 +18041,7 @@ _022CB5A0:
mov r0, r1
ldmia sp!, {r3, pc}
.align 2, 0
_022CB5B0: .word _022B966C
_022CB5B0: .word OSi_ThreadInfo
arm_func_end Cps_SocRead
arm_func_start Cpsi_SocConsumeRaw
@@ -18090,7 +18090,7 @@ _022CB634:
arm_func_start Cps_SocConsume
Cps_SocConsume: ; 0x022CB644
stmdb sp!, {r3, lr}
ldr r1, _022CB678 ; =_022B966C
ldr r1, _022CB678 ; =OSi_ThreadInfo
ldr r1, [r1, #4]
ldr r1, [r1, #0xa4]
cmp r1, #0
@@ -18104,7 +18104,7 @@ _022CB670:
bl Cpsi_SocConsumeRaw
ldmia sp!, {r3, pc}
.align 2, 0
_022CB678: .word _022B966C
_022CB678: .word OSi_ThreadInfo
arm_func_end Cps_SocConsume
arm_func_start tcp_write_do
@@ -18332,7 +18332,7 @@ _022CB980: .word ov00_02325078
arm_func_start Cpsi_SocWrite2
Cpsi_SocWrite2: ; 0x022CB984
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr ip, _022CBA50 ; =_022B966C
ldr ip, _022CBA50 ; =OSi_ThreadInfo
mov r7, r1
ldr ip, [ip, #4]
mov r6, r2
@@ -18392,14 +18392,14 @@ _022CBA48:
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_022CBA50: .word _022B966C
_022CBA50: .word OSi_ThreadInfo
_022CBA54: .word ov00_02325078
arm_func_end Cpsi_SocWrite2
arm_func_start Cps_SocWrite
Cps_SocWrite: ; 0x022CBA58
stmdb sp!, {r3, r4, r5, lr}
ldr r3, _022CBAEC ; =_022B966C
ldr r3, _022CBAEC ; =OSi_ThreadInfo
mov r2, r0
ldr r4, [r3, #4]
mov r3, r1
@@ -18439,13 +18439,13 @@ _022CBAE4:
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_022CBAEC: .word _022B966C
_022CBAEC: .word OSi_ThreadInfo
arm_func_end Cps_SocWrite
arm_func_start Cps_SocGetLength
Cps_SocGetLength: ; 0x022CBAF0
stmdb sp!, {r3, lr}
ldr r0, _022CBB5C ; =_022B966C
ldr r0, _022CBB5C ; =OSi_ThreadInfo
ldr r0, [r0, #4]
ldr r0, [r0, #0xa4]
cmp r0, #0
@@ -18476,13 +18476,13 @@ _022CBB54:
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_022CBB5C: .word _022B966C
_022CBB5C: .word OSi_ThreadInfo
arm_func_end Cps_SocGetLength
arm_func_start Cps_SocFlush
Cps_SocFlush: ; 0x022CBB60
stmdb sp!, {r4, lr}
ldr r0, _022CBB9C ; =_022B966C
ldr r0, _022CBB9C ; =OSi_ThreadInfo
ldr r0, [r0, #4]
ldr r4, [r0, #0xa4]
cmp r4, #0
@@ -18497,7 +18497,7 @@ Cps_SocFlush: ; 0x022CBB60
str r0, [r4, #0x60]
ldmia sp!, {r4, pc}
.align 2, 0
_022CBB9C: .word _022B966C
_022CBB9C: .word OSi_ThreadInfo
arm_func_end Cps_SocFlush
arm_func_start set_fixed_ip
@@ -18690,7 +18690,7 @@ _022CBE0C:
bl send_arprequest
mov sl, #0x69
_022CBE3C:
ldr r0, _022CBFA8 ; =_022B966C
ldr r0, _022CBFA8 ; =OSi_ThreadInfo
ldr sb, [r0, #8]
cmp sb, #0
beq _022CBF04
@@ -18791,7 +18791,7 @@ _022CBF98: .word ov00_02325724
_022CBF9C: .word ov00_023255A4
_022CBFA0: .word ov00_023250F8
_022CBFA4: .word 0x000003BD
_022CBFA8: .word _022B966C
_022CBFA8: .word OSi_ThreadInfo
_022CBFAC: .word ov00_023253A0
arm_func_end scavenger
@@ -21723,7 +21723,7 @@ _022CE66C:
arm_func_start Socli_GetOptimumSendBufLen
Socli_GetOptimumSendBufLen: ; 0x022CE688
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _022CE724 ; =_022B966C
ldr r1, _022CE724 ; =OSi_ThreadInfo
mov r4, r0
ldr r0, [r1, #4]
ldr r5, [r0, #0xa4]
@@ -21766,7 +21766,7 @@ _022CE71C:
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_022CE724: .word _022B966C
_022CE724: .word OSi_ThreadInfo
_022CE728: .word ov00_023268D0
arm_func_end Socli_GetOptimumSendBufLen
@@ -23582,7 +23582,7 @@ enter_computebound: ; 0x022CFDCC
cmp r0, #0x20
mvnhs r0, #0
ldmhsia sp!, {r3, r4, r5, pc}
ldr r0, _022CFE14 ; =_022B966C
ldr r0, _022CFE14 ; =OSi_ThreadInfo
ldr r5, [r0, #4]
mov r0, r5
bl OS_GetThreadPriority
@@ -23595,7 +23595,7 @@ enter_computebound: ; 0x022CFDCC
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_022CFE10: .word ov00_023188CC
_022CFE14: .word _022B966C
_022CFE14: .word OSi_ThreadInfo
arm_func_end enter_computebound
arm_func_start exit_computebound
@@ -23604,17 +23604,17 @@ exit_computebound: ; 0x022CFE18
mov r1, r0
cmp r1, #0x20
ldmhsia sp!, {r3, pc}
ldr r0, _022CFE38 ; =_022B966C
ldr r0, _022CFE38 ; =OSi_ThreadInfo
ldr r0, [r0, #4]
bl OS_SetThreadPriority
ldmia sp!, {r3, pc}
.align 2, 0
_022CFE38: .word _022B966C
_022CFE38: .word OSi_ThreadInfo
arm_func_end exit_computebound
arm_func_start Cps_SetRootCa
Cps_SetRootCa: ; 0x022CFE3C
ldr r2, _022CFE60 ; =_022B966C
ldr r2, _022CFE60 ; =OSi_ThreadInfo
ldr r2, [r2, #4]
ldr r2, [r2, #0xa4]
cmp r2, #0
@@ -23624,7 +23624,7 @@ Cps_SetRootCa: ; 0x022CFE3C
strne r1, [r2, #0x818]
bx lr
.align 2, 0
_022CFE60: .word _022B966C
_022CFE60: .word OSi_ThreadInfo
arm_func_end Cps_SetRootCa
arm_func_start Get_RootCA
@@ -26884,7 +26884,7 @@ Cps_SetSsl: ; 0x022D2B44
mov r4, r0
ldr r0, _022D2B6C ; =_02000C1C
bl OSi_ReferSymbol
ldr r0, _022D2B70 ; =_022B966C
ldr r0, _022D2B70 ; =OSi_ThreadInfo
ldr r0, [r0, #4]
ldr r0, [r0, #0xa4]
cmp r0, #0
@@ -26892,7 +26892,7 @@ Cps_SetSsl: ; 0x022D2B44
ldmia sp!, {r4, pc}
.align 2, 0
_022D2B6C: .word _02000C1C
_022D2B70: .word _022B966C
_022D2B70: .word OSi_ThreadInfo
arm_func_end Cps_SetSsl
arm_func_start Cpsi_SslPeriodical
@@ -26918,7 +26918,7 @@ _022D2BAC:
add r6, r6, #0x5c
blt _022D2B90
bl SetIrqFlag
ldr r0, _022D2C50 ; =_022B966C
ldr r0, _022D2C50 ; =OSi_ThreadInfo
ldr r4, [r0, #8]
cmp r4, #0
ldmeqia sp!, {r4, r5, r6, pc}
@@ -26957,7 +26957,7 @@ _022D2C38:
.align 2, 0
_022D2C48: .word ov00_02326AC8
_022D2C4C: .word 0x000003BD
_022D2C50: .word _022B966C
_022D2C50: .word OSi_ThreadInfo
arm_func_end Cpsi_SslPeriodical
arm_func_start Cpsi_SslCleanup
@@ -38353,7 +38353,7 @@ _022DC0DC:
cmp r0, #0
movne r0, #4
ldmneia sp!, {r4, pc}
ldr r0, _022DC178 ; =_022B966C
ldr r0, _022DC178 ; =OSi_ThreadInfo
ldr r0, [r0, #4]
bl OS_GetThreadPriority
ldr r1, _022DC16C ; =ov00_02326CB4
@@ -38370,7 +38370,7 @@ _022DC168: .word ov00_02318C2C
_022DC16C: .word ov00_02326CB4
_022DC170: .word ov00_02318BC8
_022DC174: .word ov00_02326CC0
_022DC178: .word _022B966C
_022DC178: .word OSi_ThreadInfo
arm_func_end Dwci_Auth_Start
arm_func_start Dwci_Auth_Thread
@@ -41167,7 +41167,7 @@ _022DE864:
bl Dwci_Netcheck_SetError
b _022DF5D4
_022DE88C:
ldr r0, _022DF638 ; =_022B966C
ldr r0, _022DF638 ; =OSi_ThreadInfo
ldr r0, [r0, #4]
bl OS_GetThreadPriority
sub r1, r0, #1
@@ -41356,7 +41356,7 @@ _022DEAF0:
bl Dwci_Netcheck_SetError
b _022DF5D4
_022DEB48:
ldr r0, _022DF638 ; =_022B966C
ldr r0, _022DF638 ; =OSi_ThreadInfo
ldr r0, [r0, #4]
bl OS_GetThreadPriority
ldr r2, _022DF628 ; =ov00_02326CD8
@@ -41642,7 +41642,7 @@ _022DEF14:
bl Dwci_Netcheck_SetError
b _022DF5D4
_022DEF64:
ldr r0, _022DF638 ; =_022B966C
ldr r0, _022DF638 ; =OSi_ThreadInfo
ldr r0, [r0, #4]
bl OS_GetThreadPriority
sub r1, r0, #1
@@ -41997,7 +41997,7 @@ _022DF45C:
bl Dwci_Netcheck_SetError
b _022DF5D4
_022DF484:
ldr r0, _022DF638 ; =_022B966C
ldr r0, _022DF638 ; =OSi_ThreadInfo
ldr r0, [r0, #4]
bl OS_GetThreadPriority
sub r1, r0, #1
@@ -42117,7 +42117,7 @@ _022DF628: .word ov00_02326CD8
_022DF62C: .word 0x00009C40
_022DF630: .word ov00_02319084
_022DF634: .word ov00_02326CF0
_022DF638: .word _022B966C
_022DF638: .word OSi_ThreadInfo
_022DF63C: .word ov00_02319198
_022DF640: .word _022BCA70
_022DF644: .word 0x0000012E
@@ -42513,7 +42513,7 @@ _022DFB98:
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_022DFBD8:
ldr r0, _022DFC58 ; =_022B966C
ldr r0, _022DFC58 ; =OSi_ThreadInfo
ldr r0, [r0, #4]
bl OS_GetThreadPriority
ldr r1, _022DFC38 ; =ov00_02326D68
@@ -42546,7 +42546,7 @@ _022DFC48: .word 0xFFFFA1DC
_022DFC4C: .word ov00_023192F8
_022DFC50: .word ov00_02319300
_022DFC54: .word ov00_02319308
_022DFC58: .word _022B966C
_022DFC58: .word OSi_ThreadInfo
arm_func_end Dwc_Svl_GetTokenAsync
arm_func_start Dwc_Svl_Process

View File

@@ -12,7 +12,7 @@
.public _020B2ED4
.public _020B2FBC
.public _020B3364
.public _022B966C
.public OSi_ThreadInfo
.public _022BB5EC
.public _022BB5FC
.public _022BB604

View File

@@ -192,7 +192,7 @@ _02083A60:
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_02083AC0:
ldr r0, _02083AFC ; =_022B966C
ldr r0, _02083AFC ; =OSi_ThreadInfo
ldr r1, _02083AF0 ; =_022BB7E0
ldr r2, [r0, #4]
mov r0, r4
@@ -208,7 +208,7 @@ _02083AC0:
_02083AF0: .word _022BB7E0
_02083AF4: .word _02000BC4
_02083AF8: .word Cardi_RequestStreamCommandCore
_02083AFC: .word _022B966C
_02083AFC: .word OSi_ThreadInfo
arm_func_end Cardi_RequestStreamCommand
arm_func_start Card_GetCurrentBackupType
@@ -275,7 +275,7 @@ _02083B88:
bl SetIrqFlag
mov r0, r6
bl Cardi_IdentifyBackupCore
ldr r0, _02083C70 ; =_022B966C
ldr r0, _02083C70 ; =OSi_ThreadInfo
ldr r1, _02083C6C ; =_022BB7E0
ldr r2, [r0, #4]
mov r0, r4
@@ -326,7 +326,7 @@ _02083C50:
.align 2, 0
_02083C68: .word _02000BC4
_02083C6C: .word _022BB7E0
_02083C70: .word _022B966C
_02083C70: .word OSi_ThreadInfo
arm_func_end Card_IdentifyBackup
arm_func_start Card_WaitBackupAsync

View File

@@ -478,7 +478,7 @@ _020842C0:
bl Cardi_SetTask
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_020842D8:
ldr r1, _02084300 ; =_022B966C
ldr r1, _02084300 ; =OSi_ThreadInfo
mov r0, r5
ldr r1, [r1, #4]
str r1, [r5, #0x104]
@@ -489,7 +489,7 @@ _020842F0: .word _022BBE20
_020842F4: .word _022BB7E0
_020842F8: .word _022BBE00
_020842FC: .word Cardi_ReadRomSyncCore
_02084300: .word _022B966C
_02084300: .word OSi_ThreadInfo
arm_func_end Cardi_ReadRom
arm_func_start CARD_Init

View File

@@ -1,45 +0,0 @@
.include "asm/macros.inc"
.text
arm_func_start CP_SaveContext
CP_SaveContext: ; 0x02080EF0
ldr r1, _02080F2C ; =0x04000290
stmdb sp!, {r4}
ldmia r1, {r2, r3, r4, ip}
stmia r0!, {r2, r3, r4, ip}
ldrh ip, [r1, #-0x10]
add r1, r1, #0x28
ldmia r1, {r2, r3}
stmia r0!, {r2, r3}
and ip, ip, #3
ldrh r2, [r1, #-8]
strh ip, [r0]
and r2, r2, #1
strh r2, [r0, #2]
ldmia sp!, {r4}
bx lr
.align 2, 0
_02080F2C: .word 0x04000290
arm_func_end CP_SaveContext
arm_func_start CPi_RestoreContext
CPi_RestoreContext: ; 0x02080F30
stmdb sp!, {r4}
ldr r1, _02080F68 ; =0x04000290
ldmia r0, {r2, r3, r4, ip}
stmia r1, {r2, r3, r4, ip}
ldrh r2, [r0, #0x18]
ldrh r3, [r0, #0x1a]
strh r2, [r1, #-0x10]
strh r3, [r1, #0x20]
add r0, r0, #0x10
add r1, r1, #0x28
ldmia r0, {r2, r3}
stmia r1, {r2, r3}
ldmia sp!, {r4}
bx lr
.align 2, 0
_02080F68: .word 0x04000290
arm_func_end CPi_RestoreContext

View File

@@ -24,7 +24,7 @@
.public _022B961C
.public _022B9644
.public OSi_IsThreadInitialized
.public _022B966C
.public OSi_ThreadInfo
.public _022B9670
.public _022B967C
.public _022B973C

View File

@@ -23,7 +23,7 @@
.public _022B961C
.public _022B9644
.public OSi_IsThreadInitialized
.public _022B966C
.public OSi_ThreadInfo
.public _022B9670
.public _022B967C
.public _022B973C

View File

@@ -23,7 +23,7 @@
.public _022B961C
.public _022B9644
.public OSi_IsThreadInitialized
.public _022B966C
.public OSi_ThreadInfo
.public _022B9670
.public _022B967C
.public _022B973C

View File

@@ -24,7 +24,7 @@
.public _022B961C
.public _022B9644
.public OSi_IsThreadInitialized
.public _022B966C
.public OSi_ThreadInfo
.public _022B9670
.public _022B967C
.public _022B973C

View File

@@ -23,7 +23,7 @@
.public _022B961C
.public _022B9644
.public OSi_IsThreadInitialized
.public _022B966C
.public OSi_ThreadInfo
.public _022B9670
.public _022B967C
.public _022B973C

View File

@@ -12,7 +12,7 @@
.public _020B2ED4
.public _020B2FBC
.public _020B3364
.public _022B966C
.public OSi_ThreadInfo
.public _022BB5EC
.public _022BB5FC
.public _022BB604

View File

@@ -23,7 +23,7 @@
.public _022B961C
.public _022B9644
.public OSi_IsThreadInitialized
.public _022B966C
.public OSi_ThreadInfo
.public _022B9670
.public _022B967C
.public _022B973C

View File

@@ -24,7 +24,7 @@
.public _022B961C
.public _022B9644
.public OSi_IsThreadInitialized
.public _022B966C
.public OSi_ThreadInfo
.public _022B9670
.public _022B967C
.public _022B973C

View File

@@ -24,7 +24,7 @@
.public _022B961C
.public _022B9644
.public OSi_IsThreadInitialized
.public _022B966C
.public OSi_ThreadInfo
.public _022B9670
.public _022B967C
.public _022B973C

View File

@@ -24,7 +24,7 @@
.public _022B961C
.public _022B9644
.public OSi_IsThreadInitialized
.public _022B966C
.public OSi_ThreadInfo
.public _022B9670
.public _022B967C
.public _022B973C

View File

@@ -23,7 +23,7 @@
.public _022B961C
.public _022B9644
.public OSi_IsThreadInitialized
.public _022B966C
.public OSi_ThreadInfo
.public _022B9670
.public _022B967C
.public _022B973C

View File

@@ -24,7 +24,7 @@
.public _022B961C
.public _022B9644
.public OSi_IsThreadInitialized
.public _022B966C
.public OSi_ThreadInfo
.public _022B9670
.public _022B967C
.public _022B973C

View File

@@ -24,7 +24,7 @@
.public _022B961C
.public _022B9644
.public OSi_IsThreadInitialized
.public _022B966C
.public OSi_ThreadInfo
.public _022B9670
.public _022B967C
.public _022B973C

View File

@@ -1,168 +0,0 @@
.include "asm/macros.inc"
.include "include/os_thread.inc"
.text
arm_func_start OS_InitMutex
OS_InitMutex: ; 0x0207A030
mov r1, #0
str r1, [r0, #4]
str r1, [r0]
str r1, [r0, #8]
str r1, [r0, #0xc]
bx lr
arm_func_end OS_InitMutex
arm_func_start OS_LockMutex
OS_LockMutex: ; 0x0207A048
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r0
bl EnableIrqFlag
ldr r1, _0207A0C8 ; =_022B966C
mov r4, r0
ldr r7, [r1, #4]
mov r6, #0
_0207A064:
ldr r0, [r5, #8]
cmp r0, #0
bne _0207A090
str r7, [r5, #8]
ldr r1, [r5, #0xc]
mov r0, r7
add r2, r1, #1
mov r1, r5
str r2, [r5, #0xc]
bl OSi_EnqueueTail
b _0207A0BC
_0207A090:
cmp r0, r7
bne _0207A0A8
ldr r0, [r5, #0xc]
add r0, r0, #1
str r0, [r5, #0xc]
b _0207A0BC
_0207A0A8:
mov r0, r5
str r5, [r7, #0x84]
bl OS_SleepThread
str r6, [r7, #0x84]
b _0207A064
_0207A0BC:
mov r0, r4
bl SetIrqFlag
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0207A0C8: .word _022B966C
arm_func_end OS_LockMutex
arm_func_start OS_UnlockMutex
OS_UnlockMutex: ; 0x0207A0CC
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl EnableIrqFlag
ldr r1, _0207A124 ; =_022B966C
mov r4, r0
ldr r0, [r1, #4]
ldr r1, [r5, #8]
cmp r1, r0
bne _0207A118
ldr r1, [r5, #0xc]
subs r1, r1, #1
str r1, [r5, #0xc]
bne _0207A118
mov r1, r5
bl OSi_DequeueItem
mov r1, #0
mov r0, r5
str r1, [r5, #8]
bl OS_WakeupThread
_0207A118:
mov r0, r4
bl SetIrqFlag
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0207A124: .word _022B966C
arm_func_end OS_UnlockMutex
arm_func_start OSi_UnlockAllMutex
OSi_UnlockAllMutex: ; 0x0207A128
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r0, [r5, #0x88]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r4, #0
_0207A140:
add r0, r5, #0x88
bl OSi_RemoveMutexLinkFromQueue
str r4, [r0, #0xc]
str r4, [r0, #8]
bl OS_WakeupThread
ldr r0, [r5, #0x88]
cmp r0, #0
bne _0207A140
ldmia sp!, {r3, r4, r5, pc}
arm_func_end OSi_UnlockAllMutex
arm_func_start OS_TryLockMutex
OS_TryLockMutex: ; 0x0207A164
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
bl EnableIrqFlag
ldr r2, [r5, #8]
ldr r1, _0207A1D4 ; =_022B966C
mov r4, r0
cmp r2, #0
ldr r0, [r1, #4]
bne _0207A1A8
str r0, [r5, #8]
ldr r2, [r5, #0xc]
mov r1, r5
add r2, r2, #1
str r2, [r5, #0xc]
bl OSi_EnqueueTail
mov r6, #1
b _0207A1C4
_0207A1A8:
cmp r2, r0
movne r6, #0
bne _0207A1C4
ldr r0, [r5, #0xc]
mov r6, #1
add r0, r0, #1
str r0, [r5, #0xc]
_0207A1C4:
mov r0, r4
bl SetIrqFlag
mov r0, r6
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0207A1D4: .word _022B966C
arm_func_end OS_TryLockMutex
arm_func_start OSi_EnqueueTail
OSi_EnqueueTail: ; 0x0207A1D8
ldr r2, [r0, #0x8c]
cmp r2, #0
streq r1, [r0, #0x88]
strne r1, [r2, #0x10]
str r2, [r1, #0x14]
mov r2, #0
str r2, [r1, #0x10]
str r1, [r0, #0x8c]
bx lr
arm_func_end OSi_EnqueueTail
arm_func_start OSi_DequeueItem
OSi_DequeueItem: ; 0x0207A1FC
ldr r2, [r1, #0x10]
ldr r1, [r1, #0x14]
cmp r2, #0
streq r1, [r0, #0x8c]
strne r1, [r2, #0x14]
cmp r1, #0
streq r2, [r0, #0x88]
strne r2, [r1, #0x10]
bx lr
arm_func_end OSi_DequeueItem

View File

@@ -1,57 +0,0 @@
.include "asm/macros.inc"
.text
.public MI_CpuCopy8
.public MTi_CpuCopy16
arm_func_start OS_GetMacAddress
OS_GetMacAddress: ; 0x0207B9EC
ldr ip, _0207BA00 ; =MI_CpuCopy8
mov r1, r0
ldr r0, _0207BA04 ; =0x027FFCF4
mov r2, #6
bx ip
.align 2, 0
_0207BA00: .word MI_CpuCopy8
_0207BA04: .word 0x027FFCF4
arm_func_end OS_GetMacAddress
arm_func_start GetDsFirmwareUserSettings ; OS_GetOwnerInfo
GetDsFirmwareUserSettings: ; 0x0207BA08
stmdb sp!, {r4, lr}
ldr ip, _0207BA88 ; =0x027FFC80
mov r4, r0
ldrh r2, [ip, #0x64]
add r0, ip, #6
add r1, r4, #4
mov r2, r2, lsl #0x1d
mov r2, r2, lsr #0x1d
strb r2, [r4]
ldrb r3, [ip, #2]
mov r2, #0x14
mov r3, r3, lsl #0x1c
mov r3, r3, lsr #0x1c
strb r3, [r4, #1]
ldrb r3, [ip, #3]
strb r3, [r4, #2]
ldrb r3, [ip, #4]
strb r3, [r4, #3]
ldrb r3, [ip, #0x1a]
strh r3, [r4, #0x1a]
ldrb r3, [ip, #0x50]
strh r3, [r4, #0x52]
bl MTi_CpuCopy16
ldr r0, _0207BA88 ; =0x027FFC80
add r1, r4, #0x1c
add r0, r0, #0x1c
mov r2, #0x34
bl MTi_CpuCopy16
mov r0, #0
strh r0, [r4, #0x18]
strh r0, [r4, #0x50]
ldmia sp!, {r4, pc}
.align 2, 0
_0207BA88: .word 0x027FFC80
arm_func_end GetDsFirmwareUserSettings

View File

@@ -180,7 +180,7 @@ OS_RescheduleThread: ; 0x02079340
cmp r1, #0
ldmneia sp!, {r4, r5, r6, pc}
ldrh r0, [r0, #0x26]
ldr r4, _02079404 ; =_022B966C
ldr r4, _02079404 ; =OSi_ThreadInfo
cmp r0, #0
bne _02079370
bl GetProcessorMode
@@ -229,7 +229,7 @@ _020793EC:
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02079400: .word THREAD_INFO_STRUCT
_02079404: .word _022B966C
_02079404: .word OSi_ThreadInfo
arm_func_end OS_RescheduleThread
arm_func_start OS_InitThread
@@ -278,7 +278,7 @@ _0207947C:
str r2, [r3, #-4]
ldr r2, [r1, #0x184]
ldr ip, _02079538 ; =0x7BF9DD5B
ldr r3, _0207953C ; =_022B966C
ldr r3, _0207953C ; =OSi_ThreadInfo
str ip, [r2]
str r0, [r1, #0x194]
str r0, [r1, #0x190]
@@ -313,7 +313,7 @@ _0207952C: .word OS_IRQTable
_02079530: .word 0x00000800
_02079534: .word 0xFDDB597D
_02079538: .word 0x7BF9DD5B
_0207953C: .word _022B966C
_0207953C: .word OSi_ThreadInfo
_02079540: .word 0x027FFFA0
_02079544: .word _022B967C
_02079548: .word OSi_IdleThreadProc

View File

@@ -0,0 +1,47 @@
#include <nitro.h>
#include <nitro/cp/context.h>
#if defined(SDK_TCM_APPLY) && defined(SDK_ARM9)
#include <nitro/itcm_begin.h>
#endif
asm void CP_SaveContext (register CPContext *context)
{
ldr r1, = REG_DIV_NUMER_ADDR
stmfd sp !, {r4}
ldmia r1, {r2 - r4, r12}
stmia r0 !, {r2 - r4, r12}
ldrh r12, [r1, #REG_DIVCNT_OFFSET - REG_DIV_NUMER_OFFSET]
add r1, r1, #REG_SQRT_PARAM_OFFSET - REG_DIV_NUMER_OFFSET
ldmia r1, {r2 - r3}
stmia r0 !, {r2 - r3}
and r12, r12, #REG_CP_DIVCNT_MODE_MASK
ldrh r2, [r1, #REG_SQRTCNT_OFFSET - REG_SQRT_PARAM_OFFSET]
strh r12, [r0]
and r2, r2, #REG_CP_SQRTCNT_MODE_MASK
strh r2, [r0, #2]
ldmfd sp !, {r4}
bx lr
}
asm void CPi_RestoreContext (register const CPContext *context)
{
stmfd sp !, {r4}
ldr r1, = REG_DIV_NUMER_ADDR
ldmia r0, {r2 - r4, r12}
stmia r1, {r2 - r4, r12}
ldrh r2, [r0, #CPContext.div_mode]
ldrh r3, [r0, #CPContext.sqrt_mode]
strh r2, [r1, #REG_DIVCNT_OFFSET - REG_DIV_NUMER_OFFSET]
strh r3, [r1, #REG_SQRTCNT_OFFSET - REG_DIV_NUMER_OFFSET]
add r0, r0, #CPContext.sqrt
add r1, r1, #REG_SQRT_PARAM_OFFSET - REG_DIV_NUMER_OFFSET
ldmia r0, {r2 - r3}
stmia r1, {r2 - r3}
ldmfd sp !, {r4}
bx lr
}
#if defined(SDK_TCM_APPLY) && defined(SDK_ARM9)
#include <nitro/itcm_end.h>
#endif

117
lib/NitroSDK/src/os_mutex.c Normal file
View File

@@ -0,0 +1,117 @@
#include <nitro.h>
void OSi_EnqueueTail(OSThread *thread, OSMutex *mtx);
void OSi_DequeueItem(OSThread *thread, OSMutex *mtx);
extern void OS_SleepThread(void *);
extern void OS_WakeupThread(void *);
extern OSMutex *OSi_RemoveMutexLinkFromQueue(void *);
void OS_InitMutex(OSMutex *mtx) {
OS_InitThreadQueue(&mtx->queue);
mtx->thread = NULL;
mtx->count = 0;
}
void OS_LockMutex(OSMutex *mtx) {
OSIntrMode enable;
OSThread *currentThread;
enable = EnableIrqFlag();
currentThread = OS_GetCurrentThread();
while (1) {
if (mtx->thread == NULL) {
mtx->thread = currentThread;
mtx->count++;
OSi_EnqueueTail(currentThread, mtx);
break;
} else if (mtx->thread == currentThread) {
mtx->count++;
break;
} else {
currentThread->mutex = mtx;
OS_SleepThread(&mtx->queue);
currentThread->mutex = NULL;
}
}
SetIrqFlag(enable);
}
void OS_UnlockMutex(OSMutex *mtx) {
OSIntrMode enable;
OSThread *currentThread;
enable = EnableIrqFlag();
currentThread = OS_GetCurrentThread();
if (mtx->thread == currentThread && --mtx->count == 0) {
OSi_DequeueItem(currentThread, mtx);
mtx->thread = NULL;
OS_WakeupThread(&mtx->queue);
}
SetIrqFlag(enable);
}
void OSi_UnlockAllMutex(OSThread *thread) {
while (thread->mutexQueue.head) {
OSMutex *mtx = OSi_RemoveMutexLinkFromQueue(&thread->mutexQueue);
mtx->count = 0;
mtx->thread = NULL;
OS_WakeupThread(&mtx->queue);
}
}
BOOL OS_TryLockMutex(OSMutex *mtx) {
OSIntrMode enable;
OSThread *currentThread;
BOOL success;
enable = EnableIrqFlag();
currentThread = OS_GetCurrentThread();
if (mtx->thread == NULL) {
mtx->thread = currentThread;
mtx->count++;
OSi_EnqueueTail(currentThread, mtx);
success = TRUE;
} else if (mtx->thread == currentThread) {
mtx->count++;
success = TRUE;
} else {
success = FALSE;
}
SetIrqFlag(enable);
return success;
}
void OSi_EnqueueTail(OSThread *thread, OSMutex *mtx) {
OSMutex *prev;
prev = thread->mutexQueue.tail;
if (prev == NULL) {
thread->mutexQueue.head = mtx;
} else {
prev->link.next = mtx;
}
mtx->link.prev = prev;
mtx->link.next = NULL;
thread->mutexQueue.tail = mtx;
}
void OSi_DequeueItem(OSThread *thread, OSMutex *mtx) {
OSMutex *next;
OSMutex *prev;
next = mtx->link.next;
prev = mtx->link.prev;
if (next == NULL) {
thread->mutexQueue.tail = prev;
} else {
next->link.prev = prev;
}
if (prev == NULL) {
thread->mutexQueue.head = next;
} else {
prev->link.next = next;
}
}

View File

@@ -0,0 +1,28 @@
#include <nitro.h>
extern void MTi_CpuCopy16(void *, void *, u32);
extern void MI_CpuCopy8(void *, void *, u32);
void OS_GetMacAddress(u8 *macAddr) {
MI_CpuCopy8(OS_GetSystemWork()->nvramUserInfo + ((sizeof(NVRAMConfig) + 3) & ~3), macAddr, 6);
}
//void OS_GetOwnerInfo(OSOwnerInfo *info) {
void GetDsFirmwareUserSettings(OSOwnerInfo *info) {
NVRAMConfig *src = (NVRAMConfig *)OS_GetSystemWork()->nvramUserInfo;
info->language = src->ncd.option.language;
info->favoriteColor = src->ncd.owner.favouriteColour;
info->birthday.month = src->ncd.owner.birthday.month;
info->birthday.day = src->ncd.owner.birthday.day;
info->nickNameLength = src->ncd.owner.nickname.length;
info->commentLength = src->ncd.owner.comment.length;
MTi_CpuCopy16(src->ncd.owner.nickname.str, info->nickName, 20);
MTi_CpuCopy16(src->ncd.owner.comment.str, info->comment, 52);
info->nickName[10] = 0;
info->comment[26] = 0;
}
//s64 OS_GetOwnerRtcOffset(void) {
// NVRAMConfig *cfg = (NVRAMConfig *)OS_GetSystemWork()->nvramUserInfo;
// return cfg->ncd.option.rtcOffset;
//}

View File

@@ -12,6 +12,6 @@ typedef struct CPContext {
} CPContext;
void CP_SaveContext(register CPContext *context);
void CPi_RestoreContext(register CPContext *context);
void CPi_RestoreContext(register const CPContext *context);
#endif //NITRO_CP_CONTEXT_H_

View File

@@ -18,12 +18,12 @@
//#include <nitro/os/tick.h>
#include <nitro/os/timer.h>
//#include <nitro/os/alarm.h>
//#include <nitro/os/ownerInfo.h>
#include <nitro/os/ownerInfo.h>
//#include <nitro/os/context.h>
//#include <nitro/os/system.h>
//#include <nitro/os/systemWork.h>
//#include <nitro/os/thread.h>
//#include <nitro/os/mutex.h>
#include <nitro/os/mutex.h>
//#include <nitro/os/interrupt.h>
#include <nitro/os/systemCall.h>
//#include <nitro/os/spinLock.h>

View File

@@ -0,0 +1,15 @@
#ifndef NITRO_OS_MUTEX_H
#define NITRO_OS_MUTEX_H
#include <nitro/os/context.h>
#include <nitro/os/common/mutex_shared.h>
void OSi_DequeueItem(OSThread * thread, OSMutex * mutex);
void OSi_EnqueueTail(OSThread * thread, OSMutex * mutex);
void OS_InitMutex(OSMutex* mutex);
void OS_LockMutex(OSMutex* mutex);
void OS_UnlockMutex(OSMutex* mutex);
void OSi_UnlockAllMutex(OSThread * thread);
BOOL OS_TryLockMutex(OSMutex *mtx);
#endif //NITRO_OS_MUTEX_H

View File

@@ -0,0 +1,28 @@
#ifndef NITRO_OS_OWNERINFO_H_
#define NITRO_OS_OWNERINFO_H_
#include <nitro/types.h>
typedef struct OSBirthday {
u8 month;
u8 day;
} OSBirthday;
typedef struct OSOwnerInfo {
u8 language;
u8 favoriteColor;
OSBirthday birthday;
u16 nickName[11];
u16 nickNameLength;
u16 comment[27];
u16 commentLength;
} OSOwnerInfo;
void OS_GetMacAddress(u8 *macAddr);
//void OS_GetOwnerInfo(OSOwnerInfo *info);
void GetDsFirmwareUserSettings(OSOwnerInfo *info);
s64 OS_GetOwnerRtcOffset(void);
#endif //NITRO_OS_OWNERINFO_H_

View File

@@ -242,7 +242,7 @@ Static main
Object lib/NitroSDK/asm/os_context.o
Object lib/NitroSDK/asm/os_emulator.o
Object lib/NitroSDK/asm/os_message.o
Object lib/NitroSDK/asm/os_mutex.o
Object lib/NitroSDK/src/os_mutex.o
Object lib/NitroSDK/src/os_cache.o
Object lib/NitroSDK/src/os_init.o
Object lib/NitroSDK/asm/os_arena.o
@@ -257,7 +257,7 @@ Static main
Object lib/NitroSDK/asm/os_valarm.o
Object lib/NitroSDK/src/os_system.o
object lib/NitroSDK/asm/os_reset.o
object lib/NitroSDK/asm/os_ownerinfo.o
object lib/NitroSDK/src/os_ownerinfo.o
Object lib/NitroSDK/src/os_vramExclusive.o
Object lib/NitroSDK/src/os_entropy.o
Object lib/NitroSDK/src/os_terminate_proc.o
@@ -288,7 +288,7 @@ Static main
Object lib/NitroSDK/asm/fs_overlay.o
Object lib/NitroSDK/asm/md5.o
Object lib/NitroSDK/asm/dgt.o
Object lib/NitroSDK/asm/cp_context.o
Object lib/NitroSDK/src/cp_context.o
Object lib/NitroSDK/asm/spi_tp.o
Object lib/NitroSDK/asm/spi_pm.o
Object lib/NitroSDK/asm/rtc_external.o

View File

@@ -25,7 +25,6 @@ extern void sub_0207A95C(u32, u32);
extern u32 sub_0207A98C(u32, u32, u32, u32);
extern u32 sub_0207AA34(u32, u32, u32);
extern void OS_InitTick();
extern void OS_GetMacAddress(u8(*)[6]);
extern void FS_Init(u32);
extern void sub_02008DAC();
extern void Card_SetThreadPriority(u32);
@@ -73,7 +72,7 @@ void NitroMain(void)
reg_OS_IME = 1;
ClearIrqFlag(1,old_ime);
sub_02008DAC();
OS_GetMacAddress(&macAddr);
OS_GetMacAddress(macAddr);
sub_02002228(macAddr[0] * macAddr[1] +
macAddr[2] * macAddr[3] +
macAddr[4] * macAddr[5]);