arm7 OS_arena

This commit is contained in:
red031000
2020-06-09 02:15:17 +01:00
parent 5c81c47e15
commit 07655aabe8
28 changed files with 396 additions and 337 deletions

View File

@@ -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 #########################

View File

@@ -2,7 +2,7 @@
Static arm7
{
Address 0x02380000
StackSize 1024 512
StackSize 1024 1024
}
Autoload MAIN

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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

View File

@@ -3,6 +3,7 @@
#include "nitro/types.h"
#include "OS_system.h"
#include "OS_arena.h"
void OS_Init(void);

View File

@@ -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
View 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
View 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;
}

View File

@@ -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);

View File

@@ -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)

View File

@@ -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

View File

@@ -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))

View File

@@ -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

View 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

View File

@@ -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

View 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