From c1203dc8f2d02beeb4b65d3ca9348b37789241df Mon Sep 17 00:00:00 2001 From: yosiokat Date: Wed, 14 Nov 2007 05:49:02 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=BBinclude/sysmenu/hw/common/mmap.h?= =?UTF-8?q?=E3=81=ABSystemMenu=E3=81=AE=E3=83=A1=E3=83=A2=E3=83=AA?= =?UTF-8?q?=E3=83=9E=E3=83=83=E3=83=97=E5=AE=9A=E7=BE=A9=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=E3=80=82=20=E3=83=BB=E3=83=A9=E3=82=A4=E3=83=96?= =?UTF-8?q?=E3=83=A9=E3=83=AA=E5=86=85=E3=81=A7=E4=BD=BF=E7=94=A8=E3=81=97?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=81=9F=E3=83=A1=E3=83=A2=E3=83=AA=E3=83=9E?= =?UTF-8?q?=E3=83=83=E3=83=97=E6=83=85=E5=A0=B1=E3=82=92=E4=B8=8A=E8=A8=98?= =?UTF-8?q?=E5=AE=9A=E7=BE=A9=E5=80=A4=E3=81=AB=E5=A4=89=E6=9B=B4=E3=80=82?= =?UTF-8?q?=20=E3=83=BBhyena.TWL=E3=82=B3=E3=83=B3=E3=83=9D=E3=83=BC?= =?UTF-8?q?=E3=83=8D=E3=83=B3=E3=83=88=E3=81=AE=E6=9C=80=E7=B5=82=E3=83=96?= =?UTF-8?q?=E3=83=BC=E3=83=88=E3=82=B3=E3=83=BC=E3=83=89=E3=82=A2=E3=83=89?= =?UTF-8?q?=E3=83=AC=E3=82=B9=E3=82=920x0380f000=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@171 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/components/hyena.TWL/Makefile | 2 +- build/components/hyena.TWL/src/main.c | 4 +- build/libraries_sysmenu/boot/ARM7/src/boot.c | 16 +++---- .../sysmenu/ARM9/src/sysmenu_lib.c | 5 ++- include/sysmenu/hw/common/mmap.h | 45 +++++++++++++++++-- 5 files changed, 56 insertions(+), 16 deletions(-) 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