本体設定データをCTRモードから受け取るように。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/branches/20100611_RedLauncher_Remodel@2958 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
N1277 2010-08-23 05:02:14 +00:00
parent 9deba792f2
commit 082228592e
5 changed files with 30 additions and 15 deletions

View File

@ -29,6 +29,12 @@ endif
ifdef SYSM_NO_WLFIRM
MACRO_FLAGS += -DSYSM_NO_WLFIRM
endif
ifdef SYSM_NO_SETTINGFILE
MACRO_FLAGS += -DSYSM_NO_SETTINGFILE
endif
ifdef SYSM_NO_HWINFO
MACRO_FLAGS += -DSYSM_NO_HWINFO
endif
endif
NITRO_NO_STD_PCHDR = TRUE # プリコンパイルヘッダ抑止

View File

@ -214,6 +214,9 @@ TitleProperty *SYSM_ReadParameters( void )
//-----------------------------------------------------
// 本体設定データのリード※必ずHWSecureInforリード後に実行すること。LanguageBitmapを判定に使うため
//-----------------------------------------------------
#ifdef SYSM_NO_SETTINGFILE
MI_CpuCopy8( (void*)HW_PARAM_TWL_SETTINGS_DATA_DEFAULT, LCFGi_GetTSD(), sizeof(LCFGTWLSettingsData) );
#else // SYSM_NO_SETTINGFILE
{
u8 *pBuffer = SYSM_Alloc( LCFG_READ_TEMP );
if( pBuffer ) {
@ -242,6 +245,7 @@ TitleProperty *SYSM_ReadParameters( void )
LCFG_VerifyAndRecoveryNTRSettings(); // NTR設定データを読み出して、TWL設定データとベリファイし、必要ならリカバリ
#endif // SYSM_NO_LOAD
}
#endif // SYSM_NO_SETTINGFILE
//-----------------------------------------------------
// システム領域に本体設定をコピー
@ -386,8 +390,10 @@ static void SYSMi_CopyLCFGDataHWInfo( u32 dst_addr )
*(u32 *)HW_PRELOAD_PARAMETER_ADDR = dst_addr;
// HWーマル情報、HWセキュア情報をメモリに展開しておく
#ifndef SYSM_NO_HWINFO
MI_CpuCopyFast( LCFGi_GetHWN(), (void *)HW_PARAM_TWL_HW_NORMAL_INFO, sizeof(LCFGTWLHWNormalInfo) );
MI_CpuCopyFast( LCFGi_GetHWS(), (void *)HW_HW_SECURE_INFO, HW_HW_SECURE_INFO_END - HW_HW_SECURE_INFO );
#endif // SYSM_NO_HWINFO
}

View File

@ -1020,12 +1020,14 @@ OS_TPrintf("RebootSystem failed: cant read file(%d, %d)\n", source[i], len);
SYSM_SetLoadSucceeded(TRUE);
// ここでスタック壊れていないかチェック
#ifndef SYSM_NO_LOAD
if( OS_STACK_NO_ERROR != OS_GetStackStatus( &s_thread ) )
{
OS_TPrintf("RebootSystem warning: stack was broken!\n");
// デバグ用。ERRORLOG_Init()がすでに呼ばれている事前提
ERRORLOG_Printf( "SYSMi_LoadTitleThreadFunc: stack was broken! %d\n", OS_GetStackStatus( &s_thread ) );
}
#endif // SYSM_NO_LOAD
return;
@ -1143,8 +1145,6 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
OS_Sleep( 2 );
}
#endif // SYSM_NO_LOAD
// DataOnlyなアプリはロードも起動もしない
if( pBootTitle->titleID & TITLE_ID_DATA_ONLY_FLAG_MASK )
{
@ -1175,7 +1175,12 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
OS_CreateThread( &s_thread, (void (*)(void *))SYSMi_LoadTitleThreadFunc, (void*)pBootTitle, stack+STACK_SIZE/sizeof(u64), STACK_SIZE,THREAD_PRIO );
OS_WakeupThreadDirect( &s_thread );
}else {
}
else
#endif // SYSM_NO_LOAD
{
// アプリロード済み
SYSM_SetLoadSucceeded(TRUE);
SYSM_SetLoadFinished(TRUE);
@ -1192,12 +1197,16 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
// アプリロード済みかどうかをチェック
BOOL SYSM_IsLoadTitleFinished( void )
{
#ifndef SYSM_NO_LOAD
return TRUE;
#else // SYSM_NO_LOAD
// ロード済みの時は、常にTRUE
if( !SYSMi_GetWork()->flags.arm9.isLoadFinished ) {
// ロードスレッドの完了をチェック。
SYSM_SetLoadFinished(OS_IsThreadTerminated( &s_thread ));
}
return SYSMi_GetWork()->flags.arm9.isLoadFinished ? TRUE : FALSE;
#endif // SYSM_NO_LOAD
}
@ -2236,9 +2245,7 @@ static void SYSMi_makeTitleIdList( void )
start = OS_GetTick();
// とりあえずゼロクリア
#ifndef SYSM_NO_ES
MI_CpuClear8( (void *)HW_OS_TITLE_ID_LIST, HW_OS_TITLE_ID_LIST_SIZE );
#endif
// これから起動するアプリがTWLアプリでない
if( !hs->platform_code )
@ -2286,9 +2293,8 @@ static void SYSMi_makeTitleIdList( void )
if( same_maker_code )
{
// リストに追加
#ifndef SYSM_NO_ES
list->TitleID[count] = id;
#endif
// sameMakerFlagをON
list->sameMakerFlag[count/8] |= (u8)(0x1 << (count%8));
}
@ -2299,9 +2305,8 @@ static void SYSMi_makeTitleIdList( void )
)
{
// リストに追加してジャンプ可能フラグON
#ifndef SYSM_NO_ES
list->TitleID[count] = id;
#endif
list->appJumpFlag[count/8] |= (u8)(0x1 << (count%8));
}
@ -2318,9 +2323,7 @@ static void SYSMi_makeTitleIdList( void )
list->privateFlag[count/8] |= (u8)(0x1 << (count%8));
}
// リストに強制追加
#ifndef SYSM_NO_ES
list->TitleID[count] = id;
#endif
}else
{
// セキュアアプリでない && メーカーコードが同じ
@ -2331,17 +2334,13 @@ static void SYSMi_makeTitleIdList( void )
{
list->publicFlag[count/8] |= (u8)(0x1 << (count%8));
// リストに追加
#ifndef SYSM_NO_ES
list->TitleID[count] = id;
#endif
}
if(pe_hs->private_save_data_size != 0)
{
list->privateFlag[count/8] |= (u8)(0x1 << (count%8));
// リストに追加
#ifndef SYSM_NO_ES
list->TitleID[count] = id;
#endif
}
}
}

View File

@ -23,6 +23,8 @@ export SYSM_FOR_CTR = TRUE
export SYSM_NO_LOAD = TRUE
export SYSM_NO_ES = TRUE
export SYSM_NO_WLFIRM = TRUE
export SYSM_NO_SETTINGFILE = TRUE
# export SYSM_NO_HWINFO = TRUE
# COMPILE SWITCH ※最終ROM作成時は、全てFALSEにセットする。SUBDIRのビルド時にも影響するようexportで環境変数設定する。
export SYSM_DO_NOT_SHOW_LAUNCHER = FALSE

View File

@ -443,12 +443,14 @@ void TwlMain( void )
SND_LockChannel((1 << L_CHANNEL) | (1 << R_CHANNEL), 0);
/* ストリームスレッドの起動 */
#ifndef SYSM_NO_ES
OS_CreateThread(&s_strmThread,
StrmThread,
NULL,
s_strmThreadStack + THREAD_STACK_SIZE / sizeof(u64),
THREAD_STACK_SIZE, STREAM_THREAD_PRIO);
OS_WakeupThreadDirect(&s_strmThread);
#endif // SYSM_NO_ES
// end時間計測7
MEASURE_RESULT( start, "time 7 (etc...) : %dms\n" );