・include/sysmenu/hw/common/mmap.hにSystemMenuのメモリマップ定義を追加。

・ライブラリ内で使用していたメモリマップ情報を上記定義値に変更。
・hyena.TWLコンポーネントの最終ブートコードアドレスを0x0380f000に変更。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@171 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yosiokat 2007-11-14 05:49:02 +00:00
parent 8e85753fb1
commit c1203dc8f2
5 changed files with 56 additions and 16 deletions

View File

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

View File

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

View File

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

View File

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

View File

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