diff --git a/global.inc b/global.inc index 00df7d147..ecd86a90c 100644 --- a/global.inc +++ b/global.inc @@ -1532,3 +1532,7 @@ .public SDK_STATIC_ETABLE_END .public FUN_020F47A0 .public FUN_020F4A58 +.public _fp_init +.public __call_static_initializers +.public FUN_01FF8000 +.public NitroMain diff --git a/lib/asm/crt0.s b/lib/asm/crt0.s index 7b97d6736..6ea3ff88e 100644 --- a/lib/asm/crt0.s +++ b/lib/asm/crt0.s @@ -1,9 +1,9 @@ .include "asm/macros.inc" + .include "global.inc" .text - .syntax unified arm_func_start _start -_start: @ 0x02000800 +_start: ; 0x02000800 mov ip, #0x4000000 str ip, [ip, #0x208] _02000808: @@ -13,12 +13,12 @@ _02000808: bl init_cp15 mov r0, #0x13 msr cpsr_c, r0 - ldr r0, _02000930 @ =OSi_IntrTable + ldr r0, _02000930 ; =OSi_IntrTable add r0, r0, #0x3fc0 mov sp, r0 mov r0, #0x12 msr cpsr_c, r0 - ldr r0, _02000930 @ =OSi_IntrTable + ldr r0, _02000930 ; =OSi_IntrTable add r0, r0, #0x3fc0 sub r0, r0, #0x40 sub sp, r0, #4 @@ -28,28 +28,28 @@ _02000808: _02000850: sub sp, sp, #4 _02000854: - ldr r1, _02000934 @ =0x00000800 + ldr r1, _02000934 ; =0x00000800 sub r1, r0, r1 mov r0, #0x1f msr cpsr_fsxc, r0 sub sp, r1, #4 mov r0, #0 - ldr r1, _02000930 @ =OSi_IntrTable + ldr r1, _02000930 ; =OSi_IntrTable mov r2, #0x4000 bl INITi_CpuClear32 mov r0, #0 - ldr r1, _02000938 @ =0x05000000 + ldr r1, _02000938 ; =0x05000000 mov r2, #0x400 bl INITi_CpuClear32 mov r0, #0x200 - ldr r1, _0200093C @ =0x07000000 + ldr r1, _0200093C ; =0x07000000 mov r2, #0x400 bl INITi_CpuClear32 - ldr r1, _02000940 @ =_start_ModuleParams + ldr r1, _02000940 ; =_start_ModuleParams ldr r0, [r1, #0x14] bl MIi_UncompressBackward bl do_autoload - ldr r0, _02000940 @ =_start_ModuleParams + ldr r0, _02000940 ; =_start_ModuleParams ldr r1, [r0, #0xc] ldr r2, [r0, #0x10] mov r3, r1 @@ -64,24 +64,24 @@ _020008CC: blo _020008BC bic r1, r3, #0x1f _020008D4: - mcr p15, #0, r0, c7, c10, #4 - mcr p15, #0, r1, c7, c5, #1 - mcr p15, #0, r1, c7, c14, #1 + mcr p15, 0, r0, c7, c10, 4 + mcr p15, 0, r1, c7, c5, 1 + mcr p15, 0, r1, c7, c14, 1 add r1, r1, #0x20 cmp r1, r2 blt _020008D4 - ldr r1, _02000944 @ =0x027FFF9C + ldr r1, _02000944 ; =0x027FFF9C str r0, [r1] - ldr r1, _02000930 @ =OSi_IntrTable + ldr r1, _02000930 ; =OSi_IntrTable add r1, r1, #0x3fc0 add r1, r1, #0x3c - ldr r0, _02000948 @ =FUN_01FF8000 + ldr r0, _02000948 ; =FUN_01FF8000 str r0, [r1] bl _fp_init bl NitroStartUp bl __call_static_initializers - ldr r1, _0200094C @ =NitroMain - ldr lr, _02000950 @ =0xFFFF0000 + ldr r1, _0200094C ; =NitroMain + ldr lr, _02000950 ; =0xFFFF0000 tst sp, #4 bne _02000928 b _0200092C @@ -90,36 +90,36 @@ _02000928: _0200092C: bx r1 .align 2, 0 -_02000930: .4byte OSi_IntrTable -_02000934: .4byte 0x00000800 -_02000938: .4byte 0x05000000 -_0200093C: .4byte 0x07000000 -_02000940: .4byte _start_ModuleParams -_02000944: .4byte 0x027FFF9C -_02000948: .4byte FUN_01FF8000 -_0200094C: .4byte NitroMain -_02000950: .4byte 0xFFFF0000 +_02000930: .word OSi_IntrTable +_02000934: .word 0x00000800 +_02000938: .word 0x05000000 +_0200093C: .word 0x07000000 +_02000940: .word _start_ModuleParams +_02000944: .word 0x027FFF9C +_02000948: .word FUN_01FF8000 +_0200094C: .word NitroMain +_02000950: .word 0xFFFF0000 arm_func_end _start arm_func_start INITi_CpuClear32 -INITi_CpuClear32: @ 0x02000954 +INITi_CpuClear32: ; 0x02000954 add ip, r1, r2 _02000958: cmp r1, ip blt _02000964 b _02000968 _02000964: - stm r1!, {r0} + stmia r1!, {r0} _02000968: blt _02000958 bx lr arm_func_end INITi_CpuClear32 arm_func_start MIi_UncompressBackward -MIi_UncompressBackward: @ 0x02000970 +MIi_UncompressBackward: ; 0x02000970 cmp r0, #0 beq _02000A18 - push {r4, r5, r6, r7} + stmdb sp!, {r4, r5, r6, r7} ldmdb r0, {r1, r2} add r2, r0, r2 sub r3, r0, r1, lsr #24 @@ -153,26 +153,26 @@ _020009D8: bge _020009D8 _020009E8: cmp r3, r1 - lsl r5, r5, #1 + mov r5, r5, lsl #1 bgt _020009A4 _020009F4: mov r0, #0 bic r3, r1, #0x1f _020009FC: - mcr p15, #0, r0, c7, c10, #4 - mcr p15, #0, r3, c7, c5, #1 - mcr p15, #0, r3, c7, c14, #1 + mcr p15, 0, r0, c7, c10, 4 + mcr p15, 0, r3, c7, c5, 1 + mcr p15, 0, r3, c7, c14, 1 add r3, r3, #0x20 cmp r3, r4 blt _020009FC - pop {r4, r5, r6, r7} + ldmia sp!, {r4, r5, r6, r7} _02000A18: bx lr arm_func_end MIi_UncompressBackward arm_func_start do_autoload -do_autoload: @ 0x02000A1C - ldr r0, _02000AA8 @ =_start_ModuleParams +do_autoload: ; 0x02000A1C + ldr r0, _02000AA8 ; =_start_ModuleParams ldr r1, [r0] ldr r2, [r0, #4] ldr r3, [r0, #8] @@ -209,9 +209,9 @@ _02000A80: blo _02000A70 bic r4, r5, #0x1f _02000A88: - mcr p15, #0, r7, c7, c10, #4 - mcr p15, #0, r4, c7, c5, #1 - mcr p15, #0, r4, c7, c14, #1 + mcr p15, 0, r7, c7, c10, 4 + mcr p15, 0, r4, c7, c5, 1 + mcr p15, 0, r4, c7, c14, 1 add r4, r4, #0x20 cmp r4, r6 blt _02000A88 @@ -219,87 +219,87 @@ _02000A88: _02000AA4: b _start_AutoloadDoneCallback .align 2, 0 -_02000AA8: .4byte _start_ModuleParams +_02000AA8: .word _start_ModuleParams arm_func_end do_autoload _start_AutoloadDoneCallback: bx lr arm_func_end do_autoload arm_func_start init_cp15 -init_cp15: @ 0x02000AB0 - mrc p15, #0, r0, c1, c0, #0 - ldr r1, _02000B68 @ =0x000F9005 +init_cp15: ; 0x02000AB0 + mrc p15, 0, r0, c1, c0, 0 + ldr r1, _02000B68 ; =0x000F9005 bic r0, r0, r1 - mcr p15, #0, r0, c1, c0, #0 + mcr p15, 0, r0, c1, c0, 0 mov r0, #0 - mcr p15, #0, r0, c7, c5, #0 - mcr p15, #0, r0, c7, c6, #0 - mcr p15, #0, r0, c7, c10, #4 - ldr r0, _02000B6C @ =0x04000033 - mcr p15, #0, r0, c6, c0, #0 - ldr r0, _02000B70 @ =0x0200002D - mcr p15, #0, r0, c6, c1, #0 - ldr r0, _02000B74 @ =0x027E0021 - mcr p15, #0, r0, c6, c2, #0 - ldr r0, _02000B78 @ =0x08000035 - mcr p15, #0, r0, c6, c3, #0 - ldr r0, _02000B7C @ =OSi_IntrTable + mcr p15, 0, r0, c7, c5, 0 + mcr p15, 0, r0, c7, c6, 0 + mcr p15, 0, r0, c7, c10, 4 + ldr r0, _02000B6C ; =0x04000033 + mcr p15, 0, r0, c6, c0, 0 + ldr r0, _02000B70 ; =0x0200002D + mcr p15, 0, r0, c6, c1, 0 + ldr r0, _02000B74 ; =0x027E0021 + mcr p15, 0, r0, c6, c2, 0 + ldr r0, _02000B78 ; =0x08000035 + mcr p15, 0, r0, c6, c3, 0 + ldr r0, _02000B7C ; =OSi_IntrTable orr r0, r0, #0x1a orr r0, r0, #1 - mcr p15, #0, r0, c6, c4, #0 - ldr r0, _02000B80 @ =0x0100002F - mcr p15, #0, r0, c6, c5, #0 - ldr r0, _02000B84 @ =0xFFFF001D - mcr p15, #0, r0, c6, c6, #0 - ldr r0, _02000B88 @ =0x027FF017 - mcr p15, #0, r0, c6, c7, #0 + mcr p15, 0, r0, c6, c4, 0 + ldr r0, _02000B80 ; =0x0100002F + mcr p15, 0, r0, c6, c5, 0 + ldr r0, _02000B84 ; =0xFFFF001D + mcr p15, 0, r0, c6, c6, 0 + ldr r0, _02000B88 ; =0x027FF017 + mcr p15, 0, r0, c6, c7, 0 mov r0, #0x20 - mcr p15, #0, r0, c9, c1, #1 - ldr r0, _02000B7C @ =OSi_IntrTable + mcr p15, 0, r0, c9, c1, 1 + ldr r0, _02000B7C ; =OSi_IntrTable orr r0, r0, #0xa - mcr p15, #0, r0, c9, c1, #0 + mcr p15, 0, r0, c9, c1, 0 mov r0, #0x42 - mcr p15, #0, r0, c2, c0, #1 + mcr p15, 0, r0, c2, c0, 1 mov r0, #0x42 - mcr p15, #0, r0, c2, c0, #0 + mcr p15, 0, r0, c2, c0, 0 mov r0, #2 - mcr p15, #0, r0, c3, c0, #0 - ldr r0, _02000B8C @ =0x05100011 - mcr p15, #0, r0, c5, c0, #3 - ldr r0, _02000B90 @ =0x15111011 - mcr p15, #0, r0, c5, c0, #2 - mrc p15, #0, r0, c1, c0, #0 - ldr r1, _02000B94 @ =0x0005707D + mcr p15, 0, r0, c3, c0, 0 + ldr r0, _02000B8C ; =0x05100011 + mcr p15, 0, r0, c5, c0, 3 + ldr r0, _02000B90 ; =0x15111011 + mcr p15, 0, r0, c5, c0, 2 + mrc p15, 0, r0, c1, c0, 0 + ldr r1, _02000B94 ; =0x0005707D orr r0, r0, r1 - mcr p15, #0, r0, c1, c0, #0 + mcr p15, 0, r0, c1, c0, 0 bx lr .align 2, 0 -_02000B68: .4byte 0x000F9005 -_02000B6C: .4byte 0x04000033 -_02000B70: .4byte 0x0200002D -_02000B74: .4byte 0x027E0021 -_02000B78: .4byte 0x08000035 -_02000B7C: .4byte OSi_IntrTable -_02000B80: .4byte 0x0100002F -_02000B84: .4byte 0xFFFF001D -_02000B88: .4byte 0x027FF017 -_02000B8C: .4byte 0x05100011 -_02000B90: .4byte 0x15111011 -_02000B94: .4byte 0x0005707D +_02000B68: .word 0x000F9005 +_02000B6C: .word 0x04000033 +_02000B70: .word 0x0200002D +_02000B74: .word 0x027E0021 +_02000B78: .word 0x08000035 +_02000B7C: .word OSi_IntrTable +_02000B80: .word 0x0100002F +_02000B84: .word 0xFFFF001D +_02000B88: .word 0x027FF017 +_02000B8C: .word 0x05100011 +_02000B90: .word 0x15111011 +_02000B94: .word 0x0005707D arm_func_end init_cp15 arm_func_start NitroStartUp -NitroStartUp: @ 0x02000B98 +NitroStartUp: ; 0x02000B98 bx lr arm_func_end NitroStartUp arm_func_start OSi_ReferSymbol -OSi_ReferSymbol: @ 0x02000B9C +OSi_ReferSymbol: ; 0x02000B9C bx lr arm_func_end OSi_ReferSymbol .rodata -_start_ModuleParams: @ 0x02000BA0 +_start_ModuleParams: ; 0x02000BA0 .word 0x02111EE0 ; SDK_AUTOLOAD_LIST .word 0x02111EF8 ; SDK_AUTOLOAD_LIST_END .word 0x02111860 ; SDK_AUTOLOAD_START @@ -314,35 +314,35 @@ _start_ModuleParams: @ 0x02000BA0 .balign 4, 0 .public _version_NINTENDO_DWC -_version_NINTENDO_DWC: @ 0x02000BC4 +_version_NINTENDO_DWC: ; 0x02000BC4 .asciz "[SDK+NINTENDO:DWC2.2.30008.080630.1906_DWC_2_2_PLUS8]" .balign 4, 0 .public _version_NINTENDO_WiFi -_version_NINTENDO_WiFi: @ 0x02000BFC +_version_NINTENDO_WiFi: ; 0x02000BFC .asciz "[SDK+NINTENDO:WiFi2.1.30003.0709200229]" .balign 4, 0 .public _version_UBIQUITOUS_CPS -_version_UBIQUITOUS_CPS: @ 0x02000C24 +_version_UBIQUITOUS_CPS: ; 0x02000C24 .asciz "[SDK+UBIQUITOUS:CPS]" .balign 4, 0 .public _version_UBIQUITOUS_SSL -_version_UBIQUITOUS_SSL: @ 0x02000C3C +_version_UBIQUITOUS_SSL: ; 0x02000C3C .asciz "[SDK+UBIQUITOUS:SSL]" .balign 4, 0 .public _version_Abiosso_libVCT -_version_Abiosso_libVCT: @ 0x02000C54 +_version_Abiosso_libVCT: ; 0x02000C54 .asciz "[SDK+Abiosso:libVCT 1.3.1]" .balign 4, 0 .public _version_NINTENDO_BACKUP -_version_NINTENDO_BACKUP: @ 0x02000C70 +_version_NINTENDO_BACKUP: ; 0x02000C70 .asciz "[SDK+NINTENDO:BACKUP]" .balign 4, 0 .public _version_NINTENDO_DWC_LOBBY -_version_NINTENDO_DWC_LOBBY: @ 0x02000C88 +_version_NINTENDO_DWC_LOBBY: ; 0x02000C88 .asciz "[SDK+NINTENDO:DWC_LOBBY]"