ロード済みアプリ起動サンプルが動くようになったので暫定的にコミット(定数や関数は後で整理してSDKに纏める予定)

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@439 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yoshida_teruhisa 2008-01-08 05:58:02 +00:00
parent 878960d1a8
commit acb215a44e
2 changed files with 18 additions and 14 deletions

View File

@ -701,17 +701,17 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
// カードブートでなく、ロード済みの場合、再配置情報をランチャーパラメタから読み込み // カードブートでなく、ロード済みの場合、再配置情報をランチャーパラメタから読み込み
MI_CpuCopy8( SYSM_GetLauncherParamBody()->v1.relocInfoBuf, SYSMi_GetWork()->romRelocateInfo, sizeof(Relocate_Info)*RELOCATE_INFO_NUM ); MI_CpuCopy8( SYSM_GetLauncherParamBody()->v1.relocInfoBuf, SYSMi_GetWork()->romRelocateInfo, sizeof(Relocate_Info)*RELOCATE_INFO_NUM );
// 更にヘッダを再配置 // 更にヘッダを再配置
if( ((ROM_Header_Short *)(SYSM_TWL_ARM9_LTD_LOAD_MMEM_END - 0x4000))->platform_code & PLATFORM_CODE_FLAG_TWL ) { if( ((ROM_Header_Short *)(0x27e0000 - 0x4000))->platform_code & PLATFORM_CODE_FLAG_TWL ) {
// TWL-ROMヘッダ情報の再配置 // TWL-ROMヘッダ情報の再配置
MI_CpuCopyFast( (void *)(SYSM_TWL_ARM9_LTD_LOAD_MMEM_END - 0x4000), (void *)HW_TWL_ROM_HEADER_BUF, SYSM_CARD_ROM_HEADER_SIZE ); MI_CpuCopyFast( (void *)(0x27e0000 - 0x4000), (void *)HW_TWL_ROM_HEADER_BUF, SYSM_CARD_ROM_HEADER_SIZE );
MI_CpuCopyFast( (void *)(SYSM_TWL_ARM9_LTD_LOAD_MMEM_END - 0x4000), (void *)HW_ROM_HEADER_BUF, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF ); MI_CpuCopyFast( (void *)(0x27e0000 - 0x4000), (void *)HW_ROM_HEADER_BUF, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF );
}else { }else {
// TWL-ROMヘッダ情報の再配置 // TWL-ROMヘッダ情報の再配置
MI_CpuCopyFast( (void *)(SYSM_TWL_ARM9_LTD_LOAD_MMEM_END - 0x4000), (void *)HW_TWL_ROM_HEADER_BUF, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF ); MI_CpuCopyFast( (void *)(0x27e0000 - 0x4000), (void *)HW_TWL_ROM_HEADER_BUF, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF );
MI_CpuCopyFast( (void *)(SYSM_TWL_ARM9_LTD_LOAD_MMEM_END - 0x4000), (void *)HW_ROM_HEADER_BUF, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF ); MI_CpuCopyFast( (void *)(0x27e0000 - 0x4000), (void *)HW_ROM_HEADER_BUF, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF );
// NTR-ROMヘッダ情報の再配置 // NTR-ROMヘッダ情報の再配置
MI_CpuCopyFast( (void *)(SYSM_TWL_ARM9_LTD_LOAD_MMEM_END - 0x4000), (void *)0x027ffe00, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF ); // 8MのケツへTWLデバッガでのNTRモードデバッグ用 MI_CpuCopyFast( (void *)(0x27e0000 - 0x4000), (void *)0x027ffe00, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF ); // 8MのケツへTWLデバッガでのNTRモードデバッグ用
MI_CpuCopyFast( (void *)(SYSM_TWL_ARM9_LTD_LOAD_MMEM_END - 0x4000), (void *)0x023ffe00, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF ); // 4Mのケツへ MI_CpuCopyFast( (void *)(0x27e0000 - 0x4000), (void *)0x023ffe00, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF ); // 4Mのケツへ
} }
} }
} }

View File

@ -83,35 +83,39 @@ typedef struct RomSegmentRange {
u32 end; u32 end;
}RomSegmentRange; }RomSegmentRange;
#define EPLA_TWL_HEADER_LOAD_MMEM (SYSM_TWL_ARM9_LTD_LOAD_MMEM_END - 0x4000) //#define EPLA_TWL_HEADER_LOAD_MMEM (SYSM_TWL_ARM9_LTD_LOAD_MMEM_END - 0x4000)
#define EPLA_TWL_HEADER_LOAD_MMEM_END SYSM_TWL_ARM9_LTD_LOAD_MMEM_END //#define EPLA_TWL_HEADER_LOAD_MMEM_END SYSM_TWL_ARM9_LTD_LOAD_MMEM_END
#define EPLA_TWL_HEADER_LOAD_MMEM (0x27e0000 - 0x4000)
#define EPLA_TWL_HEADER_LOAD_MMEM_END 0x27e0000
#define EPLA_TWL_ARM7_LTD_LOAD_MMEM (EPLA_TWL_HEADER_LOAD_MMEM - 0x108000) #define EPLA_TWL_ARM7_LTD_LOAD_MMEM (EPLA_TWL_HEADER_LOAD_MMEM - 0x108000)
#define EPLA_TWL_ARM7_LTD_LOAD_MMEM_END EPLA_TWL_HEADER_LOAD_MMEM #define EPLA_TWL_ARM7_LTD_LOAD_MMEM_END EPLA_TWL_HEADER_LOAD_MMEM
#define EPLA_TWL_ARM9_LTD_LOAD_MMEM_END EPLA_TWL_ARM7_LTD_LOAD_MMEM #define EPLA_TWL_ARM9_LTD_LOAD_MMEM_END EPLA_TWL_ARM7_LTD_LOAD_MMEM
#define EPLA_TWL_ARM9_LTD_LOAD_MMEM (SYSM_TWL_ARM9_LTD_LOAD_MMEM + 0x1800)
static RomSegmentRange romSegmentRange[RELOCATE_INFO_NUM] = { static RomSegmentRange romSegmentRange[RELOCATE_INFO_NUM] = {
{ SYSM_TWL_ARM9_LOAD_MMEM, SYSM_TWL_ARM9_LOAD_MMEM_END }, { SYSM_TWL_ARM9_LOAD_MMEM, SYSM_TWL_ARM9_LOAD_MMEM_END },
{ SYSM_TWL_ARM7_LOAD_MMEM, SYSM_TWL_ARM7_LOAD_MMEM_END }, { SYSM_TWL_ARM7_LOAD_MMEM, SYSM_TWL_ARM7_LOAD_MMEM_END },
{ SYSM_TWL_ARM9_LTD_LOAD_MMEM, EPLA_TWL_ARM9_LTD_LOAD_MMEM_END }, { EPLA_TWL_ARM9_LTD_LOAD_MMEM, EPLA_TWL_ARM9_LTD_LOAD_MMEM_END },
{ EPLA_TWL_ARM7_LTD_LOAD_MMEM, EPLA_TWL_ARM7_LTD_LOAD_MMEM_END }, { EPLA_TWL_ARM7_LTD_LOAD_MMEM, EPLA_TWL_ARM7_LTD_LOAD_MMEM_END },
}; };
static RomSegmentRange romSegmentRangeNitro[RELOCATE_INFO_NUM] = { static RomSegmentRange romSegmentRangeNitro[RELOCATE_INFO_NUM] = {
{ SYSM_NTR_ARM9_LOAD_MMEM, SYSM_NTR_ARM9_LOAD_MMEM_END }, { SYSM_NTR_ARM9_LOAD_MMEM, SYSM_NTR_ARM9_LOAD_MMEM_END },
{ SYSM_NTR_ARM7_LOAD_MMEM, SYSM_NTR_ARM7_LOAD_MMEM_END }, { SYSM_NTR_ARM7_LOAD_MMEM, SYSM_NTR_ARM7_LOAD_MMEM_END },
{ SYSM_TWL_ARM9_LTD_LOAD_MMEM, EPLA_TWL_ARM9_LTD_LOAD_MMEM_END }, { EPLA_TWL_ARM9_LTD_LOAD_MMEM, EPLA_TWL_ARM9_LTD_LOAD_MMEM_END },
{ EPLA_TWL_ARM7_LTD_LOAD_MMEM, EPLA_TWL_ARM7_LTD_LOAD_MMEM_END }, { EPLA_TWL_ARM7_LTD_LOAD_MMEM, EPLA_TWL_ARM7_LTD_LOAD_MMEM_END },
}; };
static u32 load_region_check_list[RELOCATE_INFO_NUM][(RELOCATE_INFO_NUM+1) * 2 - 1] = static u32 load_region_check_list[RELOCATE_INFO_NUM][(RELOCATE_INFO_NUM+1) * 2 - 1] =
{ {
{SYSM_NTR_ARM7_LOAD_MMEM, SYSM_NTR_ARM7_LOAD_MMEM_END, {SYSM_NTR_ARM7_LOAD_MMEM, SYSM_NTR_ARM7_LOAD_MMEM_END,
SYSM_TWL_ARM9_LTD_LOAD_MMEM, EPLA_TWL_ARM9_LTD_LOAD_MMEM_END, EPLA_TWL_ARM9_LTD_LOAD_MMEM, EPLA_TWL_ARM9_LTD_LOAD_MMEM_END,
EPLA_TWL_ARM7_LTD_LOAD_MMEM, EPLA_TWL_ARM7_LTD_LOAD_MMEM_END, EPLA_TWL_ARM7_LTD_LOAD_MMEM, EPLA_TWL_ARM7_LTD_LOAD_MMEM_END,
EPLA_TWL_HEADER_LOAD_MMEM, EPLA_TWL_HEADER_LOAD_MMEM_END, EPLA_TWL_HEADER_LOAD_MMEM, EPLA_TWL_HEADER_LOAD_MMEM_END,
NULL }, NULL },
{SYSM_NTR_ARM9_LOAD_MMEM, SYSM_NTR_ARM9_LOAD_MMEM_END, {SYSM_NTR_ARM9_LOAD_MMEM, SYSM_NTR_ARM9_LOAD_MMEM_END,
SYSM_TWL_ARM9_LTD_LOAD_MMEM, EPLA_TWL_ARM9_LTD_LOAD_MMEM_END, EPLA_TWL_ARM9_LTD_LOAD_MMEM, EPLA_TWL_ARM9_LTD_LOAD_MMEM_END,
EPLA_TWL_ARM7_LTD_LOAD_MMEM, EPLA_TWL_ARM7_LTD_LOAD_MMEM_END, EPLA_TWL_ARM7_LTD_LOAD_MMEM, EPLA_TWL_ARM7_LTD_LOAD_MMEM_END,
EPLA_TWL_HEADER_LOAD_MMEM, EPLA_TWL_HEADER_LOAD_MMEM_END, EPLA_TWL_HEADER_LOAD_MMEM, EPLA_TWL_HEADER_LOAD_MMEM_END,
NULL }, NULL },
@ -122,7 +126,7 @@ static u32 load_region_check_list[RELOCATE_INFO_NUM][(RELOCATE_INFO_NUM+1) * 2 -
NULL }, NULL },
{SYSM_NTR_ARM9_LOAD_MMEM, SYSM_NTR_ARM9_LOAD_MMEM_END, {SYSM_NTR_ARM9_LOAD_MMEM, SYSM_NTR_ARM9_LOAD_MMEM_END,
SYSM_NTR_ARM7_LOAD_MMEM, SYSM_NTR_ARM7_LOAD_MMEM_END, SYSM_NTR_ARM7_LOAD_MMEM, SYSM_NTR_ARM7_LOAD_MMEM_END,
SYSM_TWL_ARM9_LTD_LOAD_MMEM, EPLA_TWL_ARM9_LTD_LOAD_MMEM_END, EPLA_TWL_ARM9_LTD_LOAD_MMEM, EPLA_TWL_ARM9_LTD_LOAD_MMEM_END,
EPLA_TWL_HEADER_LOAD_MMEM, EPLA_TWL_HEADER_LOAD_MMEM_END, EPLA_TWL_HEADER_LOAD_MMEM, EPLA_TWL_HEADER_LOAD_MMEM_END,
NULL }, NULL },
}; };