summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCleverking2003 <30466983+Cleverking2003@users.noreply.github.com>2020-06-06 19:14:41 +0300
committerGitHub <noreply@github.com>2020-06-06 19:14:41 +0300
commit465ca61e67cb2b04cbe316fedab513f0b0b4e10f (patch)
treea2329b091d524c0d389e9d0b4750bde02cf75ede
parent3229f51b696bb1f7af7a9286f4f196c55eb7c21f (diff)
parentce2b89342f6277cf881d6a03194ef43b2a310fe4 (diff)
Merge branch 'master' into pikalax_work
-rw-r--r--arm7/arm7.lsf2
-rw-r--r--arm7/asm/OS_alarm.s4
-rw-r--r--arm7/asm/OS_reset.s90
-rw-r--r--arm7/asm/OS_terminate_proc.s15
-rw-r--r--arm7/asm/OS_thread.s2
-rw-r--r--arm7/asm/OS_valarm.s18
-rw-r--r--arm7/asm/dtcm.s101
-rw-r--r--arm7/asm/dtcm2.s14
-rw-r--r--arm7/asm/ext.s4
-rw-r--r--arm7/asm/itcm.s2
-rw-r--r--arm7/asm/main.s4
-rw-r--r--arm7/global.inc7
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