mirror of
https://github.com/pret/pokediamond.git
synced 2026-10-01 12:56:48 -05:00
arm7 OS_arena
This commit is contained in:
@@ -89,7 +89,7 @@ OBJCOPY := $(CROSS)objcopy
|
||||
|
||||
# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm7_thumb.s -o arm7.o
|
||||
ASFLAGS = -proc arm4t -i ..
|
||||
CFLAGS = -O4,p -proc arm7tdmi -fp soft -lang c99 -Cpp_exceptions off -i ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int -W all
|
||||
CFLAGS = -O4,s -proc arm7tdmi -fp soft -lang c99 -Cpp_exceptions off -i ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int -W all
|
||||
LDFLAGS = -map -nodead -w off -proc v4t -interworking -map -symtab -m _start
|
||||
|
||||
####################### Other Tools #########################
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Static arm7
|
||||
{
|
||||
Address 0x02380000
|
||||
StackSize 1024 512
|
||||
StackSize 1024 1024
|
||||
}
|
||||
|
||||
Autoload MAIN
|
||||
|
||||
@@ -1,7 +1,17 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
.section .bss
|
||||
|
||||
.global _03807930
|
||||
_03807930: ;0x03807930
|
||||
.space 0x03807934 - 0x03807930
|
||||
|
||||
.global _03807934
|
||||
_03807934: ;0x03807934
|
||||
.space 0x0380793C - 0x03807934
|
||||
|
||||
.section .text
|
||||
|
||||
arm_func_start OSi_AlarmHandler
|
||||
OSi_AlarmHandler: ; 0x037FA540
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
.section .bss
|
||||
|
||||
.global OSiHeapInfo
|
||||
OSiHeapInfo: ;0x038078F8
|
||||
.space 0x0380791C - 0x038078F8
|
||||
|
||||
.section .text
|
||||
|
||||
arm_func_start OS_CheckHeap
|
||||
OS_CheckHeap: ; 0x037F9D88
|
||||
|
||||
@@ -1,149 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start OS_SetArenaLo
|
||||
OS_SetArenaLo: ; 0x037F9BBC
|
||||
mov r0, r0, lsl #2
|
||||
add r0, r0, #40894464 ; 0x2700000
|
||||
add r0, r0, #1044480 ; 0xff000
|
||||
str r1, [r0, #3488] ; 0xda0
|
||||
bx lr
|
||||
|
||||
arm_func_start OS_SetArenaHi
|
||||
OS_SetArenaHi: ; 0x037F9BD0
|
||||
mov r0, r0, lsl #2
|
||||
add r0, r0, #40894464 ; 0x2700000
|
||||
add r0, r0, #1044480 ; 0xff000
|
||||
str r1, [r0, #3524] ; 0xdc4
|
||||
bx lr
|
||||
|
||||
arm_func_start OS_GetInitArenaLo
|
||||
OS_GetInitArenaLo: ; 0x037F9BE4
|
||||
cmp r0, #1
|
||||
beq _037F9C00
|
||||
cmp r0, #7
|
||||
beq _037F9C08
|
||||
cmp r0, #8
|
||||
beq _037F9C18
|
||||
b _037F9C2C
|
||||
_037F9C00:
|
||||
ldr r0, _037F9C34 ; =0x027FAFCC
|
||||
bx lr
|
||||
_037F9C08:
|
||||
ldr r0, _037F9C38 ; =0x0380B92C
|
||||
cmp r0, #58720256 ; 0x03800000
|
||||
movhi r0, #58720256 ; 0x03800000
|
||||
bx lr
|
||||
_037F9C18:
|
||||
mov r0, #58720256 ; 0x03800000
|
||||
ldr r1, _037F9C38 ; =0x0380B92C
|
||||
cmp r1, #58720256 ; 0x03800000
|
||||
movhi r0, r1
|
||||
bx lr
|
||||
_037F9C2C:
|
||||
mov r0, #0
|
||||
bx lr
|
||||
_037F9C34: .word 0x027FAFCC
|
||||
_037F9C38: .word 0x0380B92C
|
||||
|
||||
arm_func_start OS_GetInitArenaHi
|
||||
OS_GetInitArenaHi: ; 0x037F9C3C
|
||||
cmp r0, #1
|
||||
beq _037F9C58
|
||||
cmp r0, #7
|
||||
beq _037F9C60
|
||||
cmp r0, #8
|
||||
beq _037F9C68
|
||||
b _037F9CA0
|
||||
_037F9C58:
|
||||
ldr r0, _037F9CA8 ; =0x027FF000
|
||||
bx lr
|
||||
_037F9C60:
|
||||
mov r0, #58720256 ; 0x03800000
|
||||
bx lr
|
||||
_037F9C68:
|
||||
ldr r1, _037F9CAC ; =0x00000400
|
||||
ldr r0, _037F9CB0 ; =0x0380FF80
|
||||
sub r2, r0, r1
|
||||
mov r0, #58720256 ; 0x03800000
|
||||
ldr r1, _037F9CB4 ; =0x0380B92C
|
||||
cmp r1, #58720256 ; 0x03800000
|
||||
movhi r0, r1
|
||||
ldr r1, _037F9CB8 ; =0x00000400
|
||||
cmp r1, #0
|
||||
bxeq lr
|
||||
cmp r1, #0
|
||||
sublt r0, r0, r1
|
||||
subge r0, r2, r1
|
||||
bx lr
|
||||
_037F9CA0:
|
||||
mov r0, #0
|
||||
bx lr
|
||||
_037F9CA8: .word 0x027FF000
|
||||
_037F9CAC: .word 0x00000400
|
||||
_037F9CB0: .word 0x0380FF80
|
||||
_037F9CB4: .word 0x0380B92C
|
||||
_037F9CB8: .word 0x00000400
|
||||
|
||||
arm_func_start OS_GetArenaLo
|
||||
OS_GetArenaLo: ; 0x037F9CBC
|
||||
mov r0, r0, lsl #2
|
||||
add r0, r0, #40894464 ; 0x2700000
|
||||
add r0, r0, #1044480 ; 0xff000
|
||||
ldr r0, [r0, #3488] ; 0xda0
|
||||
bx lr
|
||||
|
||||
arm_func_start OS_GetArenaHi
|
||||
OS_GetArenaHi: ; 0x037F9CD0
|
||||
mov r0, r0, lsl #2
|
||||
add r0, r0, #40894464 ; 0x2700000
|
||||
add r0, r0, #1044480 ; 0xff000
|
||||
ldr r0, [r0, #3524] ; 0xdc4
|
||||
bx lr
|
||||
|
||||
arm_func_start OS_InitArena
|
||||
OS_InitArena: ; 0x037F9CE4
|
||||
stmfd sp!, {lr}
|
||||
sub sp, sp, #4
|
||||
ldr r1, _037F9D84 ; =_038078F4
|
||||
ldr r0, [r1]
|
||||
cmp r0, #0
|
||||
bne _037F9D78
|
||||
mov r0, #1
|
||||
str r0, [r1]
|
||||
bl OS_GetInitArenaHi
|
||||
mov r1, r0
|
||||
mov r0, #1
|
||||
bl OS_SetArenaHi
|
||||
mov r0, #1
|
||||
bl OS_GetInitArenaLo
|
||||
mov r1, r0
|
||||
mov r0, #1
|
||||
bl OS_SetArenaLo
|
||||
mov r0, #7
|
||||
bl OS_GetInitArenaHi
|
||||
mov r1, r0
|
||||
mov r0, #7
|
||||
bl OS_SetArenaHi
|
||||
mov r0, #7
|
||||
bl OS_GetInitArenaLo
|
||||
mov r1, r0
|
||||
mov r0, #7
|
||||
bl OS_SetArenaLo
|
||||
mov r0, #8
|
||||
bl OS_GetInitArenaHi
|
||||
mov r1, r0
|
||||
mov r0, #8
|
||||
bl OS_SetArenaHi
|
||||
mov r0, #8
|
||||
bl OS_GetInitArenaLo
|
||||
mov r1, r0
|
||||
mov r0, #8
|
||||
bl OS_SetArenaLo
|
||||
_037F9D78:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
_037F9D84: .word _038078F4
|
||||
@@ -1,7 +1,25 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
.section .bss
|
||||
|
||||
.global _03807744
|
||||
_03807744: ;0x03807744
|
||||
.space 0x03807748 - 0x03807744
|
||||
|
||||
.global _03807748
|
||||
_03807748: ;0x03807748
|
||||
.space 0x0380774C - 0x03807748
|
||||
|
||||
.global _0380774C
|
||||
_0380774C: ;0x0380774C
|
||||
.space 0x03807774 - 0x0380774C
|
||||
|
||||
.global _03807774
|
||||
_03807774: ;0x03807774
|
||||
.space 0x03807780 - 0x03807774
|
||||
|
||||
.section .text
|
||||
|
||||
arm_func_start OS_ResetRequestIrqMask
|
||||
OS_ResetRequestIrqMask: ; 0x037F8824
|
||||
|
||||
@@ -1,7 +1,25 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
.section .bss
|
||||
|
||||
.global OSi_IrqThreadQueue
|
||||
OSi_IrqThreadQueue: ;0x0380770C
|
||||
.space 0x03807714 - 0x0380770C
|
||||
|
||||
.global OSi_IrqCallbackInfo
|
||||
OSi_IrqCallbackInfo: ;0x03807714
|
||||
.space 0x03807718 - 0x03807714
|
||||
|
||||
.global _03807718
|
||||
_03807718: ;0x03807718
|
||||
.space 0x0380771C - 0x03807718
|
||||
|
||||
.global _0380771C
|
||||
_0380771C: ;0x0380771C
|
||||
.space 0x03807744 - 0x0380771C
|
||||
|
||||
.section .text
|
||||
|
||||
arm_func_start OSi_IrqVBlank
|
||||
OSi_IrqVBlank: ; 0x037F86B4
|
||||
|
||||
@@ -1,7 +1,17 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
.section .bss
|
||||
|
||||
.global _03807950
|
||||
_03807950: ;0x03807950
|
||||
.space 0x03807954 - 0x03807950
|
||||
|
||||
.global _03807954
|
||||
_03807954: ;0x03807954
|
||||
.space 0x03807958 - 0x03807954
|
||||
|
||||
.section .text
|
||||
|
||||
arm_func_start OS_ResetSystem
|
||||
OS_ResetSystem: ; 0x037FB0E0
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
.section .bss
|
||||
|
||||
.global _03807780
|
||||
_03807780: ;0x03807780
|
||||
.space 0x03807784 - 0x03807780
|
||||
|
||||
.section .text
|
||||
|
||||
arm_func_start OS_UnLockCartridge
|
||||
OS_UnLockCartridge: ; 0x037F8A18
|
||||
|
||||
@@ -1,7 +1,49 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
.section .bss
|
||||
|
||||
.global OSi_StackForDestructor
|
||||
OSi_StackForDestructor: ;0x03807784
|
||||
.space 0x03807788 - 0x03807784
|
||||
|
||||
.global OSi_RescheduleCount
|
||||
OSi_RescheduleCount: ;0x03807788
|
||||
.space 0x0380778C - 0x03807788
|
||||
|
||||
.global _0380778C
|
||||
_0380778C: ;0x0380778C
|
||||
.space 0x03807790 - 0x0380778C
|
||||
|
||||
.global OSi_SystemCallbackInSwitchThread
|
||||
OSi_SystemCallbackInSwitchThread: ;0x03807790
|
||||
.space 0x03807794 - 0x03807790
|
||||
|
||||
.global OSi_CurrentThreadPtr
|
||||
OSi_CurrentThreadPtr: ;0x03807794
|
||||
.space 0x03807798 - 0x03807794
|
||||
|
||||
.global OSi_IsThreadInitialized
|
||||
OSi_IsThreadInitialized: ;0x03807798
|
||||
.space 0x0380779C - 0x03807798
|
||||
|
||||
.global OSi_ThreadInfo
|
||||
OSi_ThreadInfo: ;0x0380779C
|
||||
.space 0x038077A0 - 0x0380779C
|
||||
|
||||
.global _038077A0
|
||||
_038077A0: ;0x038077A0
|
||||
.space 0x038077AC - 0x038077A0
|
||||
|
||||
.global OSi_IdleThread
|
||||
OSi_IdleThread: ;0x038077AC
|
||||
.space 0x03807850 - 0x038077AC
|
||||
|
||||
.global OSi_LauncherThread
|
||||
OSi_LauncherThread: ;0x03807850
|
||||
.space 0x038078F4 - 0x03807850
|
||||
|
||||
.section .text
|
||||
|
||||
arm_func_start OS_SetThreadDestructor
|
||||
OS_SetThreadDestructor: ; 0x037F8D48
|
||||
|
||||
@@ -1,7 +1,21 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
.section .bss
|
||||
|
||||
.global _03807920
|
||||
_03807920: ;0x03807920
|
||||
.space 0x03807924 - 0x03807920
|
||||
|
||||
.global OSi_NeedResetTimer
|
||||
OSi_NeedResetTimer: ;0x03807924
|
||||
.space 0x03807928 - 0x03807924
|
||||
|
||||
.global OSi_TickCounter
|
||||
OSi_TickCounter: ;0x03807928
|
||||
.space 0x03807930 - 0x03807928
|
||||
|
||||
.section .text
|
||||
|
||||
arm_func_start OS_GetTick
|
||||
OS_GetTick: ; 0x037FA364
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
.section .bss
|
||||
|
||||
.global _0380791C
|
||||
_0380791C: ;0x0380791C
|
||||
.space 0x03807920 - 0x0380791C
|
||||
|
||||
.section .text
|
||||
|
||||
arm_func_start OSi_SetTimerReserved
|
||||
OSi_SetTimerReserved: ; 0x037FA348
|
||||
|
||||
@@ -1,7 +1,25 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
.section .bss
|
||||
|
||||
.global _0380793C
|
||||
_0380793C: ;0x0380793C
|
||||
.space 0x03807940 - 0x0380793C
|
||||
|
||||
.global _03807940
|
||||
_03807940: ;0x03807940
|
||||
.space 0x03807944 - 0x03807940
|
||||
|
||||
.global _03807944
|
||||
_03807944: ;0x03807944
|
||||
.space 0x03807948 - 0x03807944
|
||||
|
||||
.global _03807948
|
||||
_03807948: ;0x03807948
|
||||
.space 0x03807950 - 0x03807948
|
||||
|
||||
.section .text
|
||||
|
||||
arm_func_start OSi_GetVFrame
|
||||
OSi_GetVFrame: ; 0x037FAA0C
|
||||
|
||||
@@ -1,7 +1,17 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
.section .bss
|
||||
|
||||
.global _03807958
|
||||
_03807958: ;0x03807958
|
||||
.space 0x0380795C - 0x03807958
|
||||
|
||||
.global _0380795C
|
||||
_0380795C: ;0x0380795C
|
||||
.space 0x038079DC - 0x0380795C
|
||||
|
||||
.section .text
|
||||
|
||||
arm_func_start PXIi_HandlerRecvFifoNotEmpty
|
||||
PXIi_HandlerRecvFifoNotEmpty: ; 0x037FB5BC
|
||||
|
||||
@@ -1,145 +1,6 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
.section .bss
|
||||
.global OSi_IrqThreadQueue
|
||||
OSi_IrqThreadQueue: ;0x0380770C
|
||||
.space 0x03807714 - 0x0380770C
|
||||
|
||||
.global OSi_IrqCallbackInfo
|
||||
OSi_IrqCallbackInfo: ;0x03807714
|
||||
.space 0x03807718 - 0x03807714
|
||||
|
||||
.global _03807718
|
||||
_03807718: ;0x03807718
|
||||
.space 0x0380771C - 0x03807718
|
||||
|
||||
.global _0380771C
|
||||
_0380771C: ;0x0380771C
|
||||
.space 0x03807744 - 0x0380771C
|
||||
|
||||
.global _03807744
|
||||
_03807744: ;0x03807744
|
||||
.space 0x03807748 - 0x03807744
|
||||
|
||||
.global _03807748
|
||||
_03807748: ;0x03807748
|
||||
.space 0x0380774C - 0x03807748
|
||||
|
||||
.global _0380774C
|
||||
_0380774C: ;0x0380774C
|
||||
.space 0x03807774 - 0x0380774C
|
||||
|
||||
.global _03807774
|
||||
_03807774: ;0x03807774
|
||||
.space 0x03807780 - 0x03807774
|
||||
|
||||
.global _03807780
|
||||
_03807780: ;0x03807780
|
||||
.space 0x03807784 - 0x03807780
|
||||
|
||||
.global OSi_StackForDestructor
|
||||
OSi_StackForDestructor: ;0x03807784
|
||||
.space 0x03807788 - 0x03807784
|
||||
|
||||
.global OSi_RescheduleCount
|
||||
OSi_RescheduleCount: ;0x03807788
|
||||
.space 0x0380778C - 0x03807788
|
||||
|
||||
.global _0380778C
|
||||
_0380778C: ;0x0380778C
|
||||
.space 0x03807790 - 0x0380778C
|
||||
|
||||
.global OSi_SystemCallbackInSwitchThread
|
||||
OSi_SystemCallbackInSwitchThread: ;0x03807790
|
||||
.space 0x03807794 - 0x03807790
|
||||
|
||||
.global OSi_CurrentThreadPtr
|
||||
OSi_CurrentThreadPtr: ;0x03807794
|
||||
.space 0x03807798 - 0x03807794
|
||||
|
||||
.global OSi_IsThreadInitialized
|
||||
OSi_IsThreadInitialized: ;0x03807798
|
||||
.space 0x0380779C - 0x03807798
|
||||
|
||||
.global OSi_ThreadInfo
|
||||
OSi_ThreadInfo: ;0x0380779C
|
||||
.space 0x038077A0 - 0x0380779C
|
||||
|
||||
.global _038077A0
|
||||
_038077A0: ;0x038077A0
|
||||
.space 0x038077AC - 0x038077A0
|
||||
|
||||
.global OSi_IdleThread
|
||||
OSi_IdleThread: ;0x038077AC
|
||||
.space 0x03807850 - 0x038077AC
|
||||
|
||||
.global OSi_LauncherThread
|
||||
OSi_LauncherThread: ;0x03807850
|
||||
.space 0x038078F4 - 0x03807850
|
||||
|
||||
.global _038078F4
|
||||
_038078F4: ;0x038078F4
|
||||
.space 0x038078F8 - 0x038078F4
|
||||
|
||||
.global OSiHeapInfo
|
||||
OSiHeapInfo: ;0x038078F8
|
||||
.space 0x0380791C - 0x038078F8
|
||||
|
||||
.global _0380791C
|
||||
_0380791C: ;0x0380791C
|
||||
.space 0x03807920 - 0x0380791C
|
||||
|
||||
.global _03807920
|
||||
_03807920: ;0x03807920
|
||||
.space 0x03807924 - 0x03807920
|
||||
|
||||
.global OSi_NeedResetTimer
|
||||
OSi_NeedResetTimer: ;0x03807924
|
||||
.space 0x03807928 - 0x03807924
|
||||
|
||||
.global OSi_TickCounter
|
||||
OSi_TickCounter: ;0x03807928
|
||||
.space 0x03807930 - 0x03807928
|
||||
|
||||
.global _03807930
|
||||
_03807930: ;0x03807930
|
||||
.space 0x03807934 - 0x03807930
|
||||
|
||||
.global _03807934
|
||||
_03807934: ;0x03807934
|
||||
.space 0x0380793C - 0x03807934
|
||||
|
||||
.global _0380793C
|
||||
_0380793C: ;0x0380793C
|
||||
.space 0x03807940 - 0x0380793C
|
||||
|
||||
.global _03807940
|
||||
_03807940: ;0x03807940
|
||||
.space 0x03807944 - 0x03807940
|
||||
|
||||
.global _03807944
|
||||
_03807944: ;0x03807944
|
||||
.space 0x03807948 - 0x03807944
|
||||
|
||||
.global _03807948
|
||||
_03807948: ;0x03807948
|
||||
.space 0x03807950 - 0x03807948
|
||||
|
||||
.global _03807950
|
||||
_03807950: ;0x03807950
|
||||
.space 0x03807954 - 0x03807950
|
||||
|
||||
.global _03807954
|
||||
_03807954: ;0x03807954
|
||||
.space 0x03807958 - 0x03807954
|
||||
|
||||
.global _03807958
|
||||
_03807958: ;0x03807958
|
||||
.space 0x0380795C - 0x03807958
|
||||
|
||||
.global _0380795C
|
||||
_0380795C: ;0x0380795C
|
||||
.space 0x038079DC - 0x0380795C
|
||||
|
||||
.global PADi_XYButtonAvailable
|
||||
PADi_XYButtonAvailable: ;0x038079DC
|
||||
|
||||
14
arm7/lib/include/OS_arena.h
Normal file
14
arm7/lib/include/OS_arena.h
Normal file
@@ -0,0 +1,14 @@
|
||||
#ifndef POKEDIAMOND_ARM7_OS_ARENA_H
|
||||
#define POKEDIAMOND_ARM7_OS_ARENA_H
|
||||
|
||||
#include "nitro/OS_arena_shared.h"
|
||||
|
||||
void OS_InitArena(void);
|
||||
void* OS_GetArenaHi(OSArenaId id);
|
||||
void* OS_GetArenaLo(OSArenaId id);
|
||||
void* OS_GetInitArenaHi(OSArenaId id);
|
||||
void* OS_GetInitArenaLo(OSArenaId id);
|
||||
void OS_SetArenaHi(OSArenaId id, void* newHi);
|
||||
void OS_SetArenaLo(OSArenaId id, void* newLo);
|
||||
|
||||
#endif //POKEDIAMOND_ARM7_OS_ARENA_H
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "nitro/types.h"
|
||||
#include "OS_system.h"
|
||||
#include "OS_arena.h"
|
||||
|
||||
void OS_Init(void);
|
||||
|
||||
|
||||
@@ -2,5 +2,6 @@
|
||||
#define POKEDIAMOND_ARM7_CONSTS_H
|
||||
|
||||
#include "nitro/consts_shared.h"
|
||||
#include "mmap.h"
|
||||
|
||||
#endif //POKEDIAMOND_ARM7_CONSTS_H
|
||||
|
||||
26
arm7/lib/include/mmap.h
Normal file
26
arm7/lib/include/mmap.h
Normal file
@@ -0,0 +1,26 @@
|
||||
#ifndef POKEDIAMOND_ARM7_MMAP_H
|
||||
#define POKEDIAMOND_ARM7_MMAP_H
|
||||
|
||||
#include "nitro/mmap_shared.h"
|
||||
|
||||
#define HW_WRAM_END 0x03800000
|
||||
#define HW_PRV_WRAM 0x03800000
|
||||
#define HW_PRV_WRAM_END 0x03810000
|
||||
|
||||
#define HW_PRV_WRAM_SIZE (HW_PRV_WRAM_END-HW_PRV_WRAM)
|
||||
|
||||
#define HW_SVC_STACK_SIZE 0x40
|
||||
#define HW_PRV_WRAM_SYSRV_SIZE 0x40
|
||||
|
||||
#define HW_MAIN_MEM_SUB_SIZE (HW_MAIN_MEM_SIZE - HW_MAIN_MEM_MAIN_SIZE - HW_MAIN_MEM_SHARED_SIZE)
|
||||
|
||||
#define HW_MAIN_MEM_SUB (HW_MAIN_MEM_MAIN_END + 0x400000)
|
||||
#define HW_MAIN_MEM_SUB_END (HW_MAIN_MEM_SUB + HW_MAIN_MEM_SUB_SIZE)
|
||||
|
||||
#define HW_PRV_WRAM_IRQ_STACK_END (HW_PRV_WRAM_SVC_STACK)
|
||||
#define HW_PRV_WRAM_SVC_STACK (HW_PRV_WRAM_SVC_STACK_END - HW_SVC_STACK_SIZE)
|
||||
#define HW_PRV_WRAM_SVC_STACK_END (HW_PRV_WRAM_SYSRV)
|
||||
|
||||
#define HW_PRV_WRAM_SYSRV (HW_PRV_WRAM + HW_PRV_WRAM_SIZE - HW_PRV_WRAM_SYSRV_SIZE)
|
||||
|
||||
#endif //POKEDIAMOND_ARM7_MMAP_H
|
||||
110
arm7/lib/src/OS_arena.c
Normal file
110
arm7/lib/src/OS_arena.c
Normal file
@@ -0,0 +1,110 @@
|
||||
#include "function_target.h"
|
||||
#include "consts.h"
|
||||
#include "OS_arena.h"
|
||||
|
||||
static BOOL OSi_Initialized = FALSE;
|
||||
|
||||
extern void SDK_SUBPRIV_ARENA_LO(void);
|
||||
extern void SDK_WRAM_ARENA_LO(void);
|
||||
extern void SDK_IRQ_STACKSIZE(void);
|
||||
extern void SDK_SYS_STACKSIZE(void);
|
||||
|
||||
ARM_FUNC void OS_InitArena(void)
|
||||
{
|
||||
if (OSi_Initialized)
|
||||
{
|
||||
return;
|
||||
}
|
||||
OSi_Initialized = TRUE;
|
||||
|
||||
OS_SetArenaHi(OS_ARENA_MAIN_SUBPRIV, OS_GetInitArenaHi(OS_ARENA_MAIN_SUBPRIV));
|
||||
OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, OS_GetInitArenaLo(OS_ARENA_MAIN_SUBPRIV));
|
||||
|
||||
OS_SetArenaHi(OS_ARENA_WRAM_SUB, OS_GetInitArenaHi(OS_ARENA_WRAM_SUB));
|
||||
OS_SetArenaLo(OS_ARENA_WRAM_SUB, OS_GetInitArenaLo(OS_ARENA_WRAM_SUB));
|
||||
|
||||
OS_SetArenaHi(OS_ARENA_WRAM_SUBPRIV, OS_GetInitArenaHi(OS_ARENA_WRAM_SUBPRIV));
|
||||
OS_SetArenaLo(OS_ARENA_WRAM_SUBPRIV, OS_GetInitArenaLo(OS_ARENA_WRAM_SUBPRIV));
|
||||
}
|
||||
|
||||
ARM_FUNC void* OS_GetArenaHi(OSArenaId id)
|
||||
{
|
||||
return OSi_GetArenaInfo().hi[id];
|
||||
}
|
||||
|
||||
ARM_FUNC void* OS_GetArenaLo(OSArenaId id)
|
||||
{
|
||||
return OSi_GetArenaInfo().lo[id];
|
||||
}
|
||||
|
||||
ARM_FUNC void* OS_GetInitArenaHi(OSArenaId id)
|
||||
{
|
||||
switch (id) {
|
||||
case OS_ARENA_MAIN_SUBPRIV:
|
||||
return (void *)HW_MAIN_MEM_SUB_END;
|
||||
case OS_ARENA_WRAM_SUB:
|
||||
return (void *)HW_WRAM_END;
|
||||
case OS_ARENA_WRAM_SUBPRIV:
|
||||
{
|
||||
u32 irqStackLo = (u32)HW_PRV_WRAM_IRQ_STACK_END - (s32)SDK_IRQ_STACKSIZE;
|
||||
u32 sysStackLo = (u32)HW_PRV_WRAM;
|
||||
|
||||
if ((u32)SDK_WRAM_ARENA_LO > (u32)HW_PRV_WRAM)
|
||||
{
|
||||
sysStackLo = (u32)SDK_WRAM_ARENA_LO;
|
||||
}
|
||||
|
||||
if (!(s32)SDK_SYS_STACKSIZE)
|
||||
{
|
||||
return (void *)sysStackLo;
|
||||
}
|
||||
else if ((s32)SDK_SYS_STACKSIZE < 0)
|
||||
{
|
||||
sysStackLo -= (s32)SDK_SYS_STACKSIZE;
|
||||
}
|
||||
else
|
||||
{
|
||||
sysStackLo = irqStackLo - (s32)SDK_SYS_STACKSIZE;
|
||||
}
|
||||
|
||||
return (void *)sysStackLo;
|
||||
}
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
ARM_FUNC void* OS_GetInitArenaLo(OSArenaId id) {
|
||||
switch (id) {
|
||||
case OS_ARENA_MAIN_SUBPRIV:
|
||||
return (void *)((u32)0x027fafcc); //todo SDK_SUBPRIV_ARENA_LO
|
||||
case OS_ARENA_WRAM_SUB:
|
||||
{
|
||||
u32 wramSubLo = ((u32)SDK_WRAM_ARENA_LO);
|
||||
if ((u32)HW_WRAM_END < (u32)wramSubLo)
|
||||
{
|
||||
wramSubLo = (u32)HW_WRAM_END;
|
||||
}
|
||||
return (void *)wramSubLo;
|
||||
}
|
||||
case OS_ARENA_WRAM_SUBPRIV:
|
||||
{
|
||||
u32 privWramLo = HW_PRV_WRAM;
|
||||
if ((u32)SDK_WRAM_ARENA_LO > (u32)privWramLo)
|
||||
{
|
||||
privWramLo = (u32)SDK_WRAM_ARENA_LO;
|
||||
}
|
||||
return (void *)privWramLo;
|
||||
}
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
ARM_FUNC void OS_SetArenaHi(OSArenaId id, void* newHi) {
|
||||
OSi_GetArenaInfo().hi[id] = newHi;
|
||||
}
|
||||
|
||||
ARM_FUNC void OS_SetArenaLo(OSArenaId id, void* newLo) {
|
||||
OSi_GetArenaInfo().lo[id] = newLo;
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
#include "function_target.h"
|
||||
#include "OS_init.h"
|
||||
|
||||
extern void OS_InitArena(void);
|
||||
extern void PXI_Init(void);
|
||||
extern void OS_InitLock(void);
|
||||
extern void OS_InitIrqTable(void);
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
#include "function_target.h"
|
||||
#include "OS_system.h"
|
||||
|
||||
#pragma optimize_for_size on
|
||||
|
||||
extern void FUN_037F8CB4(s32 count);
|
||||
|
||||
ARM_FUNC asm OSIntrMode OS_EnableInterrupts(void)
|
||||
|
||||
@@ -1,27 +1,8 @@
|
||||
#ifndef POKEDIAMOND_OS_ARENA_H
|
||||
#define POKEDIAMOND_OS_ARENA_H
|
||||
#ifndef POKEDIAMOND_ARM9_OS_ARENA_H
|
||||
#define POKEDIAMOND_ARM9_OS_ARENA_H
|
||||
|
||||
#include "nitro/types.h"
|
||||
|
||||
typedef enum {
|
||||
OS_ARENA_MAIN = 0,
|
||||
OS_ARENA_MAIN_SUBPRIV = 1,
|
||||
OS_ARENA_MAINEX = 2,
|
||||
OS_ARENA_ITCM = 3,
|
||||
OS_ARENA_DTCM = 4,
|
||||
OS_ARENA_SHARED = 5,
|
||||
OS_ARENA_WRAM_MAIN = 6,
|
||||
OS_ARENA_WRAM_SUB = 7,
|
||||
OS_ARENA_WRAM_SUBPRIV = 8,
|
||||
OS_ARENA_MAX = 9
|
||||
} OSArenaId;
|
||||
|
||||
typedef struct {
|
||||
void* lo[OS_ARENA_MAX];
|
||||
void* hi[OS_ARENA_MAX];
|
||||
u16 initialized;
|
||||
u8 padding[2];
|
||||
} OSArenaInfo;
|
||||
#include "nitro/OS_arena_shared.h"
|
||||
|
||||
void OS_InitArena(void);
|
||||
void OS_InitArenaEx(void);
|
||||
@@ -34,4 +15,4 @@ void OS_SetArenaLo(OSArenaId id, void *newLo);
|
||||
void* OS_AllocFromArenaLo(OSArenaId id, u32 size, u32 align);
|
||||
void* OS_AllocFromArenaHi(OSArenaId id, u32 size, u32 align);
|
||||
|
||||
#endif //POKEDIAMOND_OS_ARENA_H
|
||||
#endif //POKEDIAMOND_ARM9_OS_ARENA_H
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
|
||||
#define OSi_TCM_REGION_BASE_MASK 0xfffff000
|
||||
|
||||
#define OSi_GetArenaInfo() (*(OSArenaInfo*)HW_ARENA_INFO_BUF)
|
||||
#define OSi_TRUNC(n, a) (((u32) (n)) & ~((a) - 1))
|
||||
#define OSi_ROUND(n, a) (((u32) (n) + (a) - 1) & ~((a) - 1))
|
||||
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
#ifndef NITRO_MMAP_H
|
||||
#define NITRO_MMAP_H
|
||||
#ifndef POKEDIAMOND_ARM9_MMAP_H
|
||||
#define POKEDIAMOND_ARM9_MMAP_H
|
||||
|
||||
#include "nitro/types.h"
|
||||
#include "nitro/mmap_shared.h"
|
||||
|
||||
extern u32 SDK_AUTOLOAD_DTCM_START[];
|
||||
|
||||
#define HW_MAIN_MEM 0x02000000
|
||||
#define HW_MAIN_MEM_SIZE 0x00400000
|
||||
#define HW_MAIN_MEM_EX_SIZE 0x00800000
|
||||
#define HW_MAIN_MEM_MAIN_SIZE 0x003E0000
|
||||
#define HW_MAIN_MEM_SHARED_SIZE 0x00001000
|
||||
#define HW_MAIN_MEM_DEBUGGER_OFFSET 0x00700000
|
||||
|
||||
#define HW_ITCM_IMAGE 0x01000000
|
||||
@@ -31,11 +28,9 @@ extern u32 SDK_AUTOLOAD_DTCM_START[];
|
||||
#define HW_RESET_PARAMETER_BUF (HW_MAIN_MEM + 0x007ffc20)
|
||||
#define HW_ROM_BASE_OFFSET_BUF (HW_MAIN_MEM + 0x007ffc2c)
|
||||
#define HW_WM_BOOT_BUF (HW_MAIN_MEM + 0x007ffc40)
|
||||
#define HW_ARENA_INFO_BUF (HW_MAIN_MEM + 0x007ffda0) // Arena data structure
|
||||
#define HW_ROM_HEADER_BUF (HW_MAIN_MEM + 0x007ffe00) // ROM registration area data buffer
|
||||
#define HW_RED_RESERVED (HW_MAIN_MEM + 0x007ff800) // Some kind of reserved data for shared memory
|
||||
#define HW_MAIN_MEM_SYSTEM (HW_MAIN_MEM + 0x007ffc00)
|
||||
#define HW_MAIN_MEM_MAIN_END (HW_MAIN_MEM + HW_MAIN_MEM_MAIN_SIZE)
|
||||
#define HW_MAIN_MEM_EX_END (HW_MAIN_MEM + HW_MAIN_MEM_EX_SIZE)
|
||||
#define HW_MAIN_MEM_SHARED (HW_MAIN_MEM_EX_END - HW_MAIN_MEM_SHARED_SIZE)
|
||||
#define HW_DTCM_SVC_STACK_END (HW_DTCM + 0x00003fc0)
|
||||
@@ -115,4 +110,4 @@ typedef struct {
|
||||
|
||||
#define OS_GetSystemWork() ((OSSystemWork *)HW_MAIN_MEM_SYSTEM)
|
||||
|
||||
#endif
|
||||
#endif //POKEDIAMOND_ARM9_MMAP_H
|
||||
38
include/nitro/OS_arena_shared.h
Normal file
38
include/nitro/OS_arena_shared.h
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* NOTE:
|
||||
* This file is shared between ARM9 and ARM7
|
||||
* DO NOT PUT PROC SPECIFIC CODE IN HERE
|
||||
* Thank You!
|
||||
*/
|
||||
|
||||
/*
|
||||
* DO NOT INCLUDE THIS FILE DIRECTLY
|
||||
* Include OS_arena.h from the specific proc's lib
|
||||
*/
|
||||
|
||||
#ifndef POKEDIAMOND_OS_ARENA_SHARED_H
|
||||
#define POKEDIAMOND_OS_ARENA_SHARED_H
|
||||
|
||||
#include "nitro/types.h"
|
||||
|
||||
typedef enum {
|
||||
OS_ARENA_MAIN = 0,
|
||||
OS_ARENA_MAIN_SUBPRIV = 1,
|
||||
OS_ARENA_MAINEX = 2,
|
||||
OS_ARENA_ITCM = 3,
|
||||
OS_ARENA_DTCM = 4,
|
||||
OS_ARENA_SHARED = 5,
|
||||
OS_ARENA_WRAM_MAIN = 6,
|
||||
OS_ARENA_WRAM_SUB = 7,
|
||||
OS_ARENA_WRAM_SUBPRIV = 8,
|
||||
OS_ARENA_MAX = 9
|
||||
} OSArenaId;
|
||||
|
||||
typedef struct {
|
||||
void* lo[OS_ARENA_MAX];
|
||||
void* hi[OS_ARENA_MAX];
|
||||
u16 initialized;
|
||||
u8 padding[2];
|
||||
} OSArenaInfo;
|
||||
|
||||
#endif //POKEDIAMOND_OS_ARENA_SHARED_H
|
||||
@@ -14,6 +14,7 @@
|
||||
#define POKEDIAMOND_CONSTS_SHARED_H
|
||||
|
||||
#include "nitro/types.h"
|
||||
#include "nitro/mmap_shared.h"
|
||||
|
||||
//Shared Consts
|
||||
|
||||
@@ -23,4 +24,6 @@
|
||||
#define HW_PSR_DISABLE_IRQ 0x80 // Disable IRQ
|
||||
#define HW_PSR_DISABLE_IRQ_FIQ 0xc0 // Disable FIQ and IRQ
|
||||
|
||||
#define OSi_GetArenaInfo() (*(OSArenaInfo*)HW_ARENA_INFO_BUF)
|
||||
|
||||
#endif //POKEDIAMOND_CONSTS_SHARED_H
|
||||
|
||||
24
include/nitro/mmap_shared.h
Normal file
24
include/nitro/mmap_shared.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* NOTE:
|
||||
* This file is shared between ARM9 and ARM7
|
||||
* DO NOT PUT PROC SPECIFIC CODE IN HERE
|
||||
* Thank You!
|
||||
*/
|
||||
|
||||
/*
|
||||
* DO NOT INCLUDE THIS FILE DIRECTLY
|
||||
* Include mmap.h from the specific proc's lib
|
||||
*/
|
||||
|
||||
#ifndef POKEDIAMOND_MMAP_SHARED_H
|
||||
#define POKEDIAMOND_MMAP_SHARED_H
|
||||
|
||||
#define HW_MAIN_MEM 0x02000000
|
||||
#define HW_MAIN_MEM_SIZE 0x00400000
|
||||
#define HW_MAIN_MEM_MAIN_SIZE 0x003E0000
|
||||
#define HW_MAIN_MEM_SHARED_SIZE 0x00001000
|
||||
|
||||
#define HW_ARENA_INFO_BUF (HW_MAIN_MEM + 0x007ffda0)
|
||||
#define HW_MAIN_MEM_MAIN_END (HW_MAIN_MEM + HW_MAIN_MEM_MAIN_SIZE)
|
||||
|
||||
#endif //POKEDIAMOND_MMAP_SHARED_H
|
||||
Reference in New Issue
Block a user