diff options
author | Cleverking2003 <30466983+Cleverking2003@users.noreply.github.com> | 2020-06-06 19:14:41 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-06 19:14:41 +0300 |
commit | 465ca61e67cb2b04cbe316fedab513f0b0b4e10f (patch) | |
tree | a2329b091d524c0d389e9d0b4750bde02cf75ede | |
parent | 3229f51b696bb1f7af7a9286f4f196c55eb7c21f (diff) | |
parent | ce2b89342f6277cf881d6a03194ef43b2a310fe4 (diff) |
Merge branch 'master' into pikalax_work
-rw-r--r-- | arm7/arm7.lsf | 2 | ||||
-rw-r--r-- | arm7/asm/OS_alarm.s | 4 | ||||
-rw-r--r-- | arm7/asm/OS_reset.s | 90 | ||||
-rw-r--r-- | arm7/asm/OS_terminate_proc.s | 15 | ||||
-rw-r--r-- | arm7/asm/OS_thread.s | 2 | ||||
-rw-r--r-- | arm7/asm/OS_valarm.s | 18 | ||||
-rw-r--r-- | arm7/asm/dtcm.s | 101 | ||||
-rw-r--r-- | arm7/asm/dtcm2.s | 14 | ||||
-rw-r--r-- | arm7/asm/ext.s | 4 | ||||
-rw-r--r-- | arm7/asm/itcm.s | 2 | ||||
-rw-r--r-- | arm7/asm/main.s | 4 | ||||
-rw-r--r-- | arm7/global.inc | 7 |
12 files changed, 137 insertions, 126 deletions
diff --git a/arm7/arm7.lsf b/arm7/arm7.lsf index 8eb35da5..99082905 100644 --- a/arm7/arm7.lsf +++ b/arm7/arm7.lsf @@ -31,6 +31,8 @@ Autoload WRAM Object OS_alarm.o Object OS_valarm.o Object OS_system.o + Object OS_reset.o + Object OS_terminate_proc.o Object dtcm.o Object libsyscall.o Object dtcm2.o diff --git a/arm7/asm/OS_alarm.s b/arm7/asm/OS_alarm.s index d8fb813c..762c5372 100644 --- a/arm7/asm/OS_alarm.s +++ b/arm7/asm/OS_alarm.s @@ -137,7 +137,7 @@ OS_SetPeriodicAlarm: ; 0x037FA6E0 cmp r0, #0 beq _037FA710 _037FA70C: - bl FUN_037FB1F0 + bl OS_Terminate _037FA710: bl OS_DisableInterrupts mov r5, r0 @@ -171,7 +171,7 @@ OS_SetAlarm: ; 0x037FA75C cmp r0, #0 beq _037FA784 _037FA780: - bl FUN_037FB1F0 + bl OS_Terminate _037FA784: bl OS_DisableInterrupts mov r4, r0 diff --git a/arm7/asm/OS_reset.s b/arm7/asm/OS_reset.s new file mode 100644 index 00000000..100514c0 --- /dev/null +++ b/arm7/asm/OS_reset.s @@ -0,0 +1,90 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start OS_ResetSystem +OS_ResetSystem: ; 0x037FB0E0 + stmfd sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MI_StopDma + mov r0, #1 + bl MI_StopDma + mov r0, #2 + bl MI_StopDma + mov r0, #3 + bl MI_StopDma + mov r0, #262144 ; 0x40000 + bl OS_SetIrqMask + mvn r0, #0 + bl OS_ResetRequestIrqMask + bl SND_Shutdown + mov r0, #16 + bl OSi_SendToPxi + bl FUN_038073EC + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + + arm_func_start OSi_SendToPxi +OSi_SendToPxi: ; 0x037FB134 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0, lsl #8 + mov r5, #12 + mov r4, #0 +_037FB144: + mov r0, r5 + mov r1, r6 + mov r2, r4 + bl PXI_SendWordByFifo + cmp r0, #0 + bne _037FB144 + ldmia sp!, {r4, r5, r6, lr} + bx lr + + arm_func_start OSi_CommonCallback +OSi_CommonCallback: ; 0x037FB164 + stmfd sp!, {lr} + sub sp, sp, #4 + and r0, r1, #32512 ; 0x7f00 + mov r0, r0, lsl #8 + mov r0, r0, lsr #16 + cmp r0, #16 + moveq r1, #1 + ldreq r0, _037FB19C ; =_03807954 + streqh r1, [r0] + beq _037FB190 + bl OS_Terminate +_037FB190: + add sp, sp, #4 + ldmia sp!, {lr} + bx lr +_037FB19C: .word _03807954 + + arm_func_start OS_IsResetOccurred +OS_IsResetOccurred: ; 0x037FB1A0 + ldr r0, _037FB1AC ; =_03807954 + ldrh r0, [r0] + bx lr +_037FB1AC: .word _03807954 + + arm_func_start OS_InitReset +OS_InitReset: ; 0x037FB1B0 + stmfd sp!, {lr} + sub sp, sp, #4 + ldr r0, _037FB1E8 ; =_03807950 + ldrh r1, [r0] + cmp r1, #0 + bne _037FB1DC + mov r1, #1 + strh r1, [r0] + mov r0, #12 + ldr r1, _037FB1EC ; =OSi_CommonCallback + bl PXI_SetFifoRecvCallback +_037FB1DC: + add sp, sp, #4 + ldmia sp!, {lr} + bx lr +_037FB1E8: .word _03807950 +_037FB1EC: .word OSi_CommonCallback diff --git a/arm7/asm/OS_terminate_proc.s b/arm7/asm/OS_terminate_proc.s new file mode 100644 index 00000000..08b79c9a --- /dev/null +++ b/arm7/asm/OS_terminate_proc.s @@ -0,0 +1,15 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start OS_Terminate +OS_Terminate: ; 0x037FB1F0 + stmfd sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl CTRDG_VibPulseEdgeUpdate +_037FB200: + bl OS_DisableInterrupts + bl FUN_037F8530 + b _037FB200 diff --git a/arm7/asm/OS_thread.s b/arm7/asm/OS_thread.s index 832e6606..64aebb04 100644 --- a/arm7/asm/OS_thread.s +++ b/arm7/asm/OS_thread.s @@ -322,7 +322,7 @@ _037F9138: bl OS_WakeupThread bl OS_EnableScheduler bl OS_RescheduleThread - bl FUN_037FB1F0 + bl OS_Terminate ldmia sp!, {r4, lr} bx lr _037F9164: .word OSi_CurrentThreadPtr diff --git a/arm7/asm/OS_valarm.s b/arm7/asm/OS_valarm.s index d538ad83..07e22fc5 100644 --- a/arm7/asm/OS_valarm.s +++ b/arm7/asm/OS_valarm.s @@ -114,7 +114,7 @@ _037FAB4C: _037FAB8C: ldr r7, [sl] mov r0, sl - bl FUN_037FAECC + bl OSi_DetachVAlarm str r4, [sl] cmp r7, #0 beq _037FABB0 @@ -137,7 +137,7 @@ _037FABB0: b _037FAC00 _037FABE4: mov r0, sl - bl FUN_037FAECC + bl OSi_DetachVAlarm mov r0, sl bl OSi_AppendVAlarm ldr r0, [fp] @@ -167,7 +167,7 @@ OS_CancelVAlarms: ; 0x037FAC30 mov r5, r0 cmp r7, #0 bne _037FAC50 - bl FUN_037FB1F0 + bl OS_Terminate _037FAC50: ldr r0, _037FACA8 ; =_03807948 ldr r0, [r0] @@ -212,7 +212,7 @@ OS_CancelVAlarm: ; 0x037FACAC b _037FACF4 _037FACDC: mov r0, r5 - bl FUN_037FAECC + bl OSi_DetachVAlarm mov r0, #0 str r0, [r5] mov r0, r4 @@ -229,7 +229,7 @@ OS_SetVAlarmTag: ; 0x037FAD00 mov r5, r0 movs r4, r1 bne _037FAD18 - bl FUN_037FB1F0 + bl OS_Terminate _037FAD18: cmp r5, #0 strne r4, [r5, #8] @@ -279,7 +279,7 @@ OS_SetPeriodicVAlarm: ; 0x037FAD88 cmp r0, #0 beq _037FADC0 _037FADBC: - bl FUN_037FB1F0 + bl OS_Terminate _037FADC0: ldr r0, _037FAE1C ; =0x04000006 ldrh r9, [r0] @@ -322,7 +322,7 @@ OS_SetVAlarm: ; 0x037FAE20 cmp r0, #0 beq _037FAE58 _037FAE54: - bl FUN_037FB1F0 + bl OS_Terminate _037FAE58: ldr r0, _037FAEB4 ; =0x04000006 ldrh r9, [r0] @@ -357,8 +357,8 @@ OS_CreateVAlarm: ; 0x037FAEB8 str r1, [r0, #32] bx lr - arm_func_start FUN_037FAECC -FUN_037FAECC: ; 0x037FAECC + arm_func_start OSi_DetachVAlarm +OSi_DetachVAlarm: ; 0x037FAECC cmp r0, #0 bxeq lr ldr r2, [r0, #20] diff --git a/arm7/asm/dtcm.s b/arm7/asm/dtcm.s index 53b17162..f02a5a49 100644 --- a/arm7/asm/dtcm.s +++ b/arm7/asm/dtcm.s @@ -2,103 +2,6 @@ .include "global.inc" .section .text - arm_func_start OS_ResetSystem -OS_ResetSystem: ; 0x037FB0E0 - stmfd sp!, {lr} - sub sp, sp, #4 - mov r0, #0 - bl MI_StopDma - mov r0, #1 - bl MI_StopDma - mov r0, #2 - bl MI_StopDma - mov r0, #3 - bl MI_StopDma - mov r0, #262144 ; 0x40000 - bl OS_SetIrqMask - mvn r0, #0 - bl OS_ResetRequestIrqMask - bl SND_Shutdown - mov r0, #16 - bl FUN_037FB134 - bl FUN_038073EC - add sp, sp, #4 - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_037FB134 -FUN_037FB134: ; 0x037FB134 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0, lsl #8 - mov r5, #12 - mov r4, #0 -_037FB144: - mov r0, r5 - mov r1, r6 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - bne _037FB144 - ldmia sp!, {r4, r5, r6, lr} - bx lr - - arm_func_start FUN_037FB164 -FUN_037FB164: ; 0x037FB164 - stmfd sp!, {lr} - sub sp, sp, #4 - and r0, r1, #32512 ; 0x7f00 - mov r0, r0, lsl #8 - mov r0, r0, lsr #16 - cmp r0, #16 - moveq r1, #1 - ldreq r0, _037FB19C ; =_03807954 - streqh r1, [r0] - beq _037FB190 - bl FUN_037FB1F0 -_037FB190: - add sp, sp, #4 - ldmia sp!, {lr} - bx lr -_037FB19C: .word _03807954 - - arm_func_start OS_IsResetOccurred -OS_IsResetOccurred: ; 0x037FB1A0 - ldr r0, _037FB1AC ; =_03807954 - ldrh r0, [r0] - bx lr -_037FB1AC: .word _03807954 - - arm_func_start OS_InitReset -OS_InitReset: ; 0x037FB1B0 - stmfd sp!, {lr} - sub sp, sp, #4 - ldr r0, _037FB1E8 ; =_03807950 - ldrh r1, [r0] - cmp r1, #0 - bne _037FB1DC - mov r1, #1 - strh r1, [r0] - mov r0, #12 - ldr r1, _037FB1EC ; =FUN_037FB164 - bl PXI_SetFifoRecvCallback -_037FB1DC: - add sp, sp, #4 - ldmia sp!, {lr} - bx lr -_037FB1E8: .word _03807950 -_037FB1EC: .word FUN_037FB164 - - arm_func_start FUN_037FB1F0 -FUN_037FB1F0: ; 0x037FB1F0 - stmfd sp!, {lr} - sub sp, sp, #4 - mov r0, #0 - bl CTRDG_VibPulseEdgeUpdate -_037FB200: - bl OS_DisableInterrupts - bl FUN_037F8530 - b _037FB200 - arm_func_start MI_StopDma MI_StopDma: ; 0x037FB20C stmdb sp!, {r4, lr} @@ -7036,7 +6939,7 @@ FUN_03800E54: ; 0x03800E54 bl CTRDG_VibPulseEdgeUpdate bl SND_BeginSleep bl WVR_Shutdown - bl FUN_037FB1F0 + bl OS_Terminate add sp, sp, #4 ldmia sp!, {lr} bx lr @@ -7182,7 +7085,7 @@ FUN_03801048: ; 0x03801048 bl FUN_03800E54 b _03801068 _03801064: - bl FUN_037FB1F0 + bl OS_Terminate _03801068: add sp, sp, #4 ldmia sp!, {lr} diff --git a/arm7/asm/dtcm2.s b/arm7/asm/dtcm2.s index 97edfaca..57fd39e1 100644 --- a/arm7/asm/dtcm2.s +++ b/arm7/asm/dtcm2.s @@ -1022,7 +1022,7 @@ _03801F20: strh r1, [r0] b _03801F40 _03801F3C: - bl FUN_037FB1F0 + bl OS_Terminate _03801F40: add sp, sp, #12 ldmia sp!, {r4, r5, r6, r7, lr} @@ -1719,7 +1719,7 @@ _03802878: bl PMi_SetControl b _03802890 _0380288C: - bl FUN_037FB1F0 + bl OS_Terminate _03802890: ldr r0, _038028A0 ;@ =PMi_LEDStatus str r4, [r0] @@ -3161,7 +3161,7 @@ _03803C24: bne _03803C1C b _03803C44 _03803C40: - bl FUN_037FB1F0 + bl OS_Terminate _03803C44: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} @@ -3177,7 +3177,7 @@ FUN_03803C58: ;@ 0x03803C58 bl CTRDG_VibPulseEdgeUpdate bl SND_BeginSleep bl WVR_Shutdown - bl FUN_037FB1F0 + bl OS_Terminate add sp, sp, #4 ldmia sp!, {lr} bx lr @@ -3488,7 +3488,7 @@ FUN_03804094: ;@ 0x03804094 bl FUN_03803C58 b _038040B4 _038040B0: - bl FUN_037FB1F0 + bl OS_Terminate _038040B4: add sp, sp, #4 ldmia sp!, {lr} @@ -3505,7 +3505,7 @@ FUN_038040C0: ;@ 0x038040C0 moveq r1, #1 streq r1, [r0, #16] beq _038040E8 - bl FUN_037FB1F0 + bl OS_Terminate _038040E8: add sp, sp, #4 ldmia sp!, {lr} @@ -6221,7 +6221,7 @@ _03806548: orr r1, r6, r5 orrs r0, r0, r1 beq _03806590 - bl FUN_037FB1F0 + bl OS_Terminate _03806590: bl FUN_03806680 add r7, r4, #40 ;@ 0x28 diff --git a/arm7/asm/ext.s b/arm7/asm/ext.s index ce7f7f70..7242b170 100644 --- a/arm7/asm/ext.s +++ b/arm7/asm/ext.s @@ -601,8 +601,8 @@ _0600078C: .word SND_BeginSleep arm_func_start FUN_06000790 FUN_06000790: ; 0x06000790 - ldr pc, _06000794 ; =FUN_037FB1F0 -_06000794: .word FUN_037FB1F0 + ldr pc, _06000794 ; =OS_Terminate +_06000794: .word OS_Terminate arm_func_start WM_sp_init WM_sp_init: ; 0x06000798 diff --git a/arm7/asm/itcm.s b/arm7/asm/itcm.s index be3e36e2..48ed9199 100644 --- a/arm7/asm/itcm.s +++ b/arm7/asm/itcm.s @@ -29,7 +29,7 @@ _027E0014: add r0, r3, r2 cmp r1, r0 beq _027E0060 - bl FUN_037FB1F0 + bl OS_Terminate _027E0060: ldr r0, _027E00D0 ; =0x0380A3F4 ldr r3, [r0] diff --git a/arm7/asm/main.s b/arm7/asm/main.s index c12d04f6..ea5cd8be 100644 --- a/arm7/asm/main.s +++ b/arm7/asm/main.s @@ -313,7 +313,7 @@ FUN_037F83B0: ; 0x037F83B0 bl OS_CreateHeap movs r4, r0 bpl _037F8438 - bl FUN_037FB1F0 + bl OS_Terminate _037F8438: mov r0, #8 mov r1, r4 @@ -323,7 +323,7 @@ _037F8438: bl OS_CheckHeap cmp r0, #8448 ; 0x2100 bcs _037F845C - bl FUN_037FB1F0 + bl OS_Terminate _037F845C: mov r0, r4 ldmia sp!, {r4, lr} diff --git a/arm7/global.inc b/arm7/global.inc index fc925f6c..1fafbbb6 100644 --- a/arm7/global.inc +++ b/arm7/global.inc @@ -95,7 +95,6 @@ .extern OS_DisableInterrupts
.extern OS_RestoreInterrupts
.extern OS_SpinWait
-.extern FUN_037FB1F0
.extern MIi_CpuClear32
.extern MIi_CpuClearFast
.extern MIi_CpuCopyFast
@@ -106,9 +105,10 @@ .extern PXI_SetFifoRecvCallback
.extern EXIi_SelectRcnt
.extern EXIi_SetBitRcnt0L
-.extern SND_EndSleep
.extern SND_BeginSleep
+.extern SND_EndSleep
.extern SND_Init
+.extern SND_Shutdown
.extern SPI_Init
.extern PMi_ResetControl
.extern PMi_SetControl
@@ -156,7 +156,8 @@ .extern OS_InitVAlarm
.extern OS_DisableInterrupts
.extern OS_RestoreInterrupts
-.extern FUN_037FB1F0
+.extern OS_Terminate
+.extern MI_StopDma
.extern MI_WaitDma
.extern MIi_CpuClear16
.extern MIi_CpuCopy16
|