diff --git a/build/components/hyena.TWL/Makefile b/build/components/hyena.TWL/Makefile index f13f1595..032ec4a5 100644 --- a/build/components/hyena.TWL/Makefile +++ b/build/components/hyena.TWL/Makefile @@ -43,7 +43,7 @@ include $(TWLIPL_ROOT)/build/buildtools/commondefs MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037c0000' \ -DADDRESS_FLXMAIN='0x02280000' \ - -DADDRESS_BOOTCORE='0x0380f100' \ + -DADDRESS_BOOTCORE='0x0380f000' \ -DCRT0_O='$(CRT0_O)' MAKELCF_FLAGS += -DISDBG_LIBS='$(ISDBG_LIBS)' diff --git a/build/components/hyena.TWL/src/main.c b/build/components/hyena.TWL/src/main.c index 522181a3..ce734fce 100644 --- a/build/components/hyena.TWL/src/main.c +++ b/build/components/hyena.TWL/src/main.c @@ -86,8 +86,8 @@ TwlSpMain(void) { void *wram = OS_GetWramSubPrivArenaHi(); void *mmem = OS_GetSubPrivArenaHi(); - OS_SetSubPrivArenaHi( (void*)0x02380000 ); // メモリ配置をいじっているので、アリーナHiも変更しないとダメ!! - OS_SetWramSubPrivArenaHi( (void*)BOOTCORE_ARM7_ADDR ); + OS_SetSubPrivArenaHi( (void*)SYSM_OWN_ARM7_MMEM_ADDR_END ); // メモリ配置をいじっているので、アリーナHiも変更しないとダメ!! + OS_SetWramSubPrivArenaHi( (void*)SYSM_OWN_ARM7_WRAM_ADDR_END ); OS_TPrintf( "MMEM SUBPRV ARENA HI : %08x -> %08x\n", mmem, OS_GetSubPrivArenaHi() ); OS_TPrintf( "WRAM SUBPRV ARENA HI : %08x -> %08x\n", wram, OS_GetWramSubPrivArenaHi() ); } diff --git a/build/libraries_sysmenu/boot/ARM7/src/boot.c b/build/libraries_sysmenu/boot/ARM7/src/boot.c index 35f0d237..cfe3173e 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/boot.c +++ b/build/libraries_sysmenu/boot/ARM7/src/boot.c @@ -54,16 +54,16 @@ static asm void ClearMemory( void ) { mov r11, lr #if 1 - ldr r0, = 0x02280000 // SYSMENU-ARM7 MMEMのクリア - ldr r1, = 0x02380000 + ldr r0, = SYSM_OWN_ARM7_MMEM_ADDR // SYSMENU-ARM7 MMEMのクリア + ldr r1, = SYSM_OWN_ARM7_MMEM_ADDR_END bl CpuClear32Byte - ldr r0, = 0x02800000 // SYSMENU-ARM9 MMEMのクリア - ldr r1, = 0x02e7fc00 + ldr r0, = SYSM_OWN_ARM9_MMEM_ADDR // SYSMENU-ARM9 MMEMのクリア + ldr r1, = SYSM_OWN_ARM9_MMEM_ADDR_END bl CpuClear32Byte - ldr r0, = HW_WRAM_A_LTD // ARM7-WRAMのクリア( LTDのマッピング ) - ldr r1, = BOOTCORE_ARM7_ADDR + ldr r0, = SYSM_OWN_ARM7_WRAM_ADDR // SYSMENU-ARM7 WRAMのクリア(WRAM-A + ARM7専用WRAM) + ldr r1, = SYSM_OWN_ARM7_WRAM_ADDR_END bl CpuClear32Byte #endif bx r11 @@ -111,11 +111,11 @@ static asm void ClearBankREG_Stack( void ) bl CpuClear32Byte #endif // ISDBG_MB_CHILD_ - sub r0, r2, #( HW_PRV_WRAM_END - BOOTCORE_ARM7_ADDR ) + sub r0, r2, #( HW_PRV_WRAM_END - SYSM_BOOTCODE_ARM7_ADDR ) ldr r1, = ClearMemory bl CpuClear32Byte - ldr r2, = 0x027ff000 + ldr r2, = 0x02fff000 mov r0, r2 add r1, r2, #0x800 bl CpuClear32Byte diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index 64ec1061..fd32e70f 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -83,10 +83,10 @@ void SYSM_Init( void *(*pAlloc)(u32), void (*pFree)(void*) ) #endif /* __SYSM_DEBUG */ // ARM7コンポーネント用プロテクションユニット領域変更 - OS_SetProtectionRegion( 2, 0x02280000, 512KB ); + OS_SetProtectionRegion( 2, SYSM_OWN_ARM7_MMEM_ADDR, 512KB ); // ARM9用ブートコード配置のため、アリーナHi位置を下げる - OS_SetMainArenaHi( (void *)0x02e7fc00 ); + OS_SetMainArenaHi( (void *)SYSM_OWN_ARM9_MMEM_ADDR_END ); SYSM_SetAllocFunc( pAlloc, pFree ); @@ -144,6 +144,7 @@ int SYSM_GetCardTitleList( TitleProperty *pTitleList_Card ) return 0; } + // 指定ファイルリード static s32 ReadFile(FSFile* pf, void* buffer, s32 size) { diff --git a/include/sysmenu/hw/common/mmap.h b/include/sysmenu/hw/common/mmap.h index 9fbe4818..4a72d77b 100644 --- a/include/sysmenu/hw/common/mmap.h +++ b/include/sysmenu/hw/common/mmap.h @@ -25,13 +25,52 @@ extern "C" { #endif // define data ------------------------------------ -#define BOOTCORE_ARM9_ADDR 0x02e7fc00 // ARM9最終ブートコードアドレス -#define BOOTCORE_ARM7_ADDR 0x0380f100 // ARM7最終ブートコードアドレス + +// SystemMenu自身のマップ情報定義 +#define SYSM_OWN_ARM9_MMEM_ADDR 0x02800000 +#define SYSM_OWN_ARM9_MMEM_ADDR_END SYSM_BOOTCODE_ARM9_ADDR +#define SYSM_OWN_ARM7_MMEM_ADDR 0x02280000 +#define SYSM_OWN_ARM7_MMEM_ADDR_END 0x02380000 +#define SYSM_OWN_ARM7_WRAM_ADDR 0x037c0000 +#define SYSM_OWN_ARM7_WRAM_ADDR_END SYSM_BOOTCODE_ARM7_ADDR + +#define SYSM_BOOTCODE_ARM9_ADDR 0x02e7fc00 // ARM9最終ブートコードアドレス +#define SYSM_BOOTCODE_ARM7_ADDR 0x0380f000 // ARM7最終ブートコードアドレス #define SYSROM9_NINLOGO_ADR 0xffff0020 // ARM9システムROM内の任天堂ロゴ格納アドレス + + +// ※アプリをWRAMに直接配置してブートしようとすると、SystemMenuのコードとぶつかっていろいろややこしい状態になるので、検討が必要 + +// アプリロード可能領域のマップ情報定義 +#define SYSM_NTR_ARM9_LOAD_MMEM 0x02000000 // ロード可能なARM9 static MMEM アドレス +#define SYSM_NTR_ARM9_LOAD_MMEM_END 0x02280000 // ロード可能なARM9 static MMEM 最終アドレス +#define SYSM_NTR_ARM7_LOAD_MMEM 0x02380000 // ロード可能なARM7 static MMEM アドレス +#define SYSM_NTR_ARM7_LOAD_MMEM_END 0x023c0000 // ロード可能なARM7 static MMEM 最終アドレス +#define SYSM_NTR_ARM7_LOAD_WRAM 0x037f8000 // ロード可能なARM7 static WRAM アドレス +#define SYSM_NTR_ARM7_LOAD_WRAM_END 0x0380f000 // ロード可能なARM7 static WRAM 最終アドレス + +#define SYSM_TWL_ARM9_LOAD_MMEM SYSM_NTR_ARM9_LOAD_MMEM // ロード可能なARM9 static MMEM アドレス +#define SYSM_TWL_ARM9_LOAD_MMEM_END SYSM_NTR_ARM9_LOAD_MMEM_END // ロード可能なARM9 static MMEM 最終アドレス +#define SYSM_TWL_ARM7_LOAD_MMEM SYSM_NTR_ARM7_LOAD_MMEM // ロード可能なARM7 static MMEM アドレス +#define SYSM_TWL_ARM7_LOAD_MMEM_END SYSM_NTR_ARM7_LOAD_MMEM_END // ロード可能なARM7 static MMEM 最終アドレス +#define SYSM_TWL_ARM7_LOAD_WRAM SYSM_NTR_ARM7_LOAD_WRAM // ロード可能なARM7 static WRAM アドレス +#define SYSM_TWL_ARM7_LOAD_WRAM_END SYSM_NTR_ARM7_LOAD_WRAM_END // ロード可能なARM7 static WRAM 最終アドレス + +#define SYSM_TWL_ARM9_LTD_LOAD_MMEM 0x02400000 // ロード可能なARM9 LTD static MMEM アドレス +#define SYSM_TWL_ARM9_LTD_LOAD_MMEM_END 0x02800000 // ロード可能なARM9 LTD static MMEM 最終アドレス +#define SYSM_TWL_ARM7_LTD_LOAD_MMEM 0x02e80000 // ロード可能なARM7 LTD static MMEM アドレス +#define SYSM_TWL_ARM7_LTD_LOAD_MMEM_END 0x02f88000 // ロード可能なARM7 LTD static MMEM 最終アドレス +#define SYSM_TWL_ARM7_LTD_LOAD_WRAM 0x037c0000 // ロード可能なARM7 LTD static WRAM アドレス +#define SYSM_TWL_ARM7_LTD_LOAD_WRAM_END SYSM_NTR_ARM7_LOAD_WRAM_END // ロード可能なARM7 LTD static WRAM 最終アドレス +#define SYSM_TWL_ARM7_LTD_HYB_LOAD_WRAM 0x037f8000 // ロード可能なARM7 LTD static WRAM アドレス +#define SYSM_TWL_ARM7_LTD_HYB_LOAD_WRAM_END SYSM_NTR_ARM7_LOAD_WRAM_END // ロード可能なARM7 LTD static WRAM 最終アドレス + + +// ※旧NTR-IPL2のレガシーコード 整理予定 #define SYSM_ARM9_LOAD_MMEM_LAST_ADDR 0x02280000 // ロード可能なARM9 staticメインメモリ最終アドレス #define SYSM_ARM7_LOAD_MMEM_LAST_ADDR 0x023c0000 // ロード可能なARM7 staticメインメモリ最終アドレス -#define SYSM_ARM7_LOAD_WRAM_LAST_ADDR BOOTCORE_ARM7_ADDR // ロード可能なARM7 staticメインメモリ最終アドレス +#define SYSM_ARM7_LOAD_WRAM_LAST_ADDR SYSM_BOOTCODE_ARM7_ADDR // ロード可能なARM7 staticメインメモリ最終アドレス #define SYSM_ARM9_MMEM_ENTRY_ADDR_LIMIT SYSM_ARM9_LOAD_MMEM_LAST_ADDR #ifdef __cplusplus