mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
NANDアプリでも使用するのでSYSM_APP_ROM_HEADER_BUFへ変更。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1385 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
174aaba20a
commit
e67e648428
@ -53,7 +53,7 @@ typedef struct TitleBlackList {
|
||||
|
||||
static void BOOTi_ClearREG_RAM( void );
|
||||
static void BOOTi_CutAwayRegionList( u32 *regionlist, u32 start, u32 end );
|
||||
static void BOOTi_CheckTitleBlackList( void );
|
||||
static void BOOTi_CheckTitleBlackList( ROM_Header_Short *pROMH );
|
||||
|
||||
// global variables--------------------------------------------------
|
||||
|
||||
@ -100,7 +100,7 @@ BOOL BOOT_WaitStart( void )
|
||||
{
|
||||
if( (reg_PXI_MAINPINTF & 0x000f ) == 0x000f ) {
|
||||
// 最適化されるとポインタを初期化しただけでは何もコードは生成されません
|
||||
ROM_Header *th = (ROM_Header *)SYSM_CARD_ROM_HEADER_BUF; // TWL拡張ROMヘッダ(DSアプリには無い)
|
||||
ROM_Header *th = (ROM_Header *)SYSM_APP_ROM_HEADER_BUF; // TWL拡張ROMヘッダ(DSアプリには無い)
|
||||
ROM_Header *dh = (ROM_Header *)(SYSMi_GetWork()->romHeaderNTR); // DS互換ROMヘッダ
|
||||
BOOL isNtrMode;
|
||||
|
||||
@ -109,13 +109,13 @@ BOOL BOOT_WaitStart( void )
|
||||
(void)OS_SetIrqMaskEx(0);
|
||||
|
||||
// NTR-ROMヘッダへのパッチ処理のためコピー
|
||||
MI_CpuCopyFast( (void *)SYSM_CARD_ROM_HEADER_BUF, dh, HW_CARD_ROM_HEADER_SIZE );
|
||||
MI_CpuCopyFast( th, dh, HW_CARD_ROM_HEADER_SIZE );
|
||||
|
||||
// ブラックリストをチェックし、起動制限をかける
|
||||
BOOTi_CheckTitleBlackList();
|
||||
BOOTi_CheckTitleBlackList( (void*)th );
|
||||
|
||||
// マウント情報を一時的にSYSM_TWL_MOUNT_INFO_TMP_BUFFERに登録
|
||||
// ここまでにSYSM_CARD_ROM_HEADER_BUFのキャッシュがライトバックされている必要あり
|
||||
// ここまでにSYSM_APP_ROM_HEADER_BUFのキャッシュがライトバックされている必要あり
|
||||
SYSMi_SetBootAppMountInfo( &SYSMi_GetWork2()->bootTitleProperty );
|
||||
|
||||
// FSによってshared領域にコピーされたランチャー自身のマウントパスのクリア
|
||||
@ -397,10 +397,9 @@ static void BOOTi_CutAwayRegionList( u32 *regionlist, u32 start, u32 end )
|
||||
}
|
||||
|
||||
// 起動制限をかけるブラックリストTITLEのチェック
|
||||
static void BOOTi_CheckTitleBlackList( void )
|
||||
static void BOOTi_CheckTitleBlackList( ROM_Header_Short *pROMH )
|
||||
{
|
||||
const TitleBlackList *pBlackList = &s_blackList[ 0 ];
|
||||
ROM_Header_Short *pROMH = (ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF;
|
||||
|
||||
while( pBlackList->rom_version >= 0 ) {
|
||||
if( ( pBlackList->titleID == pROMH->titleID ) &&
|
||||
|
||||
@ -56,7 +56,7 @@ static void ie_subphandler( void )
|
||||
void BOOT_Ready( void )
|
||||
{
|
||||
// 最適化されるとポインタを初期化しただけでは何もコードは生成されません
|
||||
ROM_Header *th = (ROM_Header *)SYSM_CARD_ROM_HEADER_BUF; // TWL拡張ROMヘッダ(DSアプリには無い)
|
||||
ROM_Header *th = (ROM_Header *)SYSM_APP_ROM_HEADER_BUF; // TWL拡張ROMヘッダ(DSアプリには無い)
|
||||
ROM_Header *dh = (ROM_Header *)(SYSMi_GetWork()->romHeaderNTR); // DS互換ROMヘッダ
|
||||
BOOL isNtrMode;
|
||||
int i;
|
||||
|
||||
@ -297,7 +297,7 @@ void HOTSW_Init(u32 threadPrio)
|
||||
OS_WakeupThreadDirect(&HotSwThreadData.monitorThread);
|
||||
|
||||
// バッファの設定
|
||||
HOTSW_SetBootSegmentBuffer((void *)SYSM_CARD_ROM_HEADER_BAK, SYSM_CARD_ROM_HEADER_SIZE );
|
||||
HOTSW_SetBootSegmentBuffer((void *)SYSM_CARD_ROM_HEADER_BAK, SYSM_APP_ROM_HEADER_SIZE );
|
||||
HOTSW_SetSecureSegmentBuffer(HOTSW_MODE1, (void *)SYSM_CARD_NTR_SECURE_BUF, SECURE_AREA_SIZE );
|
||||
HOTSW_SetSecureSegmentBuffer(HOTSW_MODE2, (void *)SYSM_CARD_TWL_SECURE_BUF, SECURE_AREA_SIZE );
|
||||
|
||||
@ -458,7 +458,7 @@ static HotSwState LoadCardData(void)
|
||||
if ( !s_cbData.pBootSegBuf->rh.s.enable_nitro_whitelist_signature )
|
||||
#endif
|
||||
// NTRカードの場合はRomHeaderバッファの1ページ目以降をクリアしておく。
|
||||
MI_CpuClearFast((void *)(SYSM_CARD_ROM_HEADER_BAK + PAGE_SIZE), SYSM_CARD_ROM_HEADER_SIZE - PAGE_SIZE);
|
||||
MI_CpuClearFast((void *)(SYSM_CARD_ROM_HEADER_BAK + PAGE_SIZE), SYSM_APP_ROM_HEADER_SIZE - PAGE_SIZE);
|
||||
}
|
||||
|
||||
// SecureコマンドのPNG_ONコマンドetc用のレイテンシを求める(Latency1とLatency2を足す)
|
||||
@ -1945,7 +1945,7 @@ static void FinalizeHotSw(HotSwApliType type)
|
||||
}
|
||||
|
||||
// NANDアプリヘッダはコピー済み
|
||||
if(((ROM_Header*)SYSM_CARD_ROM_HEADER_BUF)->s.game_card_on){
|
||||
if(((ROM_Header*)SYSM_APP_ROM_HEADER_BUF)->s.game_card_on){
|
||||
McPowerOn();
|
||||
|
||||
s_cbData.modeType = HOTSW_MODE2;
|
||||
|
||||
@ -220,8 +220,8 @@ BOOL SYSMi_CopyCardRomHeader( void )
|
||||
|
||||
if( SYSM_IsExistCard() ) {
|
||||
// ROMヘッダのリード
|
||||
DC_InvalidateRange( (void *)SYSM_CARD_ROM_HEADER_BAK, SYSM_CARD_ROM_HEADER_SIZE ); // キャッシュケア
|
||||
MI_CpuCopyFast( (void *)SYSM_CARD_ROM_HEADER_BAK, (void *)SYSM_CARD_ROM_HEADER_BUF, SYSM_CARD_ROM_HEADER_SIZE ); // ROMヘッダコピー
|
||||
DC_InvalidateRange( (void *)SYSM_CARD_ROM_HEADER_BAK, SYSM_APP_ROM_HEADER_SIZE ); // キャッシュケア
|
||||
MI_CpuCopyFast( (void *)SYSM_CARD_ROM_HEADER_BAK, (void *)SYSM_APP_ROM_HEADER_BUF, SYSM_APP_ROM_HEADER_SIZE ); // ROMヘッダコピー
|
||||
SYSMi_GetWork()->cardHeaderCrc16 = SYSMi_GetWork()->cardHeaderCrc16_bak; // ROMヘッダCRCコピー
|
||||
|
||||
retval = TRUE;
|
||||
@ -577,7 +577,7 @@ OS_TPrintf("RebootSystem failed: cant read file(%p, %d, %d, %d)\n", &s_authcode,
|
||||
// 各領域を読み込む
|
||||
source [region_header ] = 0x00000000;
|
||||
length [region_header ] = HW_TWL_ROM_HEADER_BUF_SIZE;
|
||||
destaddr[region_header ] = SYSM_CARD_ROM_HEADER_BUF;
|
||||
destaddr[region_header ] = SYSM_APP_ROM_HEADER_BUF;
|
||||
|
||||
source [region_arm9_ntr] = head->s.main_rom_offset;
|
||||
length [region_arm9_ntr] = head->s.main_size;
|
||||
@ -774,7 +774,7 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
|
||||
static void SYSMi_AppendRelocateInfoCardSecureArea( void )
|
||||
{
|
||||
u32 size;
|
||||
u32 *dest ;
|
||||
u32 *dest;
|
||||
// NTRセキュア領域の再配置は後でbootAPIおよびrebootライブラリにて行う
|
||||
if( SYSM_GetCardRomHeader()->platform_code & PLATFORM_CODE_FLAG_TWL ) {
|
||||
// TWLモード
|
||||
@ -826,7 +826,7 @@ static AuthResult SYSMi_AuthenticateTWLHeader( TitleProperty *pBootTitle )
|
||||
OSTick start,prev;
|
||||
start = OS_GetTick();
|
||||
|
||||
head = ( ROM_Header *)SYSM_CARD_ROM_HEADER_BUF;
|
||||
head = ( ROM_Header *)SYSM_APP_ROM_HEADER_BUF;
|
||||
|
||||
// NANDアプリの場合、NAM_CheckTitleLaunchRights()を呼んでチェック
|
||||
if( pBootTitle->flags.bootType == LAUNCHER_BOOTTYPE_NAND )
|
||||
@ -1017,7 +1017,7 @@ static AuthResult SYSMi_AuthenticateNTRDownloadAppHeader( TitleProperty *pBootTi
|
||||
OSTick start;
|
||||
start = OS_GetTick();
|
||||
|
||||
head = ( ROM_Header *)SYSM_CARD_ROM_HEADER_BUF;
|
||||
head = ( ROM_Header *)SYSM_APP_ROM_HEADER_BUF;
|
||||
|
||||
// 署名処理
|
||||
{
|
||||
@ -1093,7 +1093,7 @@ static AuthResult SYSMi_AuthenticateNTRCardAppHeader( TitleProperty *pBootTitle)
|
||||
// ヘッダ認証
|
||||
static AuthResult SYSMi_AuthenticateHeader( TitleProperty *pBootTitle)
|
||||
{
|
||||
ROM_Header_Short *hs = ( ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF;
|
||||
ROM_Header_Short *hs = ( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF;
|
||||
// [TODO:]認証結果はどこかワークに保存しておく
|
||||
// [TODO:]ヘッダに署名ビットがあるはずなので、それを確認して署名チェックを行う
|
||||
if( hs->platform_code & PLATFORM_CODE_FLAG_TWL )
|
||||
@ -1181,8 +1181,8 @@ static void SYSMi_AuthenticateTitleThreadFunc( TitleProperty *pBootTitle )
|
||||
// BOOTTYPE_MEMORYでNTRモードのFSありでブートすると、旧NitroSDKでビルドされたアプリの場合、
|
||||
// ROMアーカイブにカードが割り当てられて、FSで関係ないカードにアクセスにいってしまうので、それを防止する。
|
||||
if( ( pBootTitle->flags.bootType == LAUNCHER_BOOTTYPE_MEMORY ) &&
|
||||
( ( (( ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF)->platform_code ) == 0 ) &&
|
||||
( ( (( ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF)->fat_size ) > 0 )
|
||||
( ( (( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF)->platform_code ) == 0 ) &&
|
||||
( ( (( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF)->fat_size ) > 0 )
|
||||
) {
|
||||
s_authResult = AUTH_RESULT_TITLE_BOOTTYPE_ERROR;
|
||||
return;
|
||||
@ -1233,7 +1233,7 @@ AuthResult SYSM_TryToBootTitle( TitleProperty *pBootTitle )
|
||||
u8 *pBuffer = SYSM_Alloc( LCFG_WRITE_TEMP );
|
||||
if( pBuffer != NULL ) {
|
||||
LCFG_TSD_SetLastTimeBootSoftTitleID ( pBootTitle->titleID );
|
||||
LCFG_TSD_SetLastTimeBootSoftPlatform( (u8)SYSM_GetCardRomHeader()->platform_code );
|
||||
LCFG_TSD_SetLastTimeBootSoftPlatform( (u8)SYSM_GetAppRomHeader()->platform_code );
|
||||
(void)LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer );
|
||||
SYSM_Free( pBuffer );
|
||||
}
|
||||
@ -1261,7 +1261,7 @@ static void SYSMi_makeTitleIdList( void )
|
||||
// [TODO:]現在ブート不可タイトルについても入れるようにしているが
|
||||
// これで良いのか?
|
||||
OSTitleIDList *list = ( OSTitleIDList * )HW_OS_TITLE_ID_LIST;
|
||||
ROM_Header_Short *hs = ( ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF;
|
||||
ROM_Header_Short *hs = ( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF;
|
||||
int l;
|
||||
u8 count = 0;
|
||||
|
||||
|
||||
@ -105,7 +105,7 @@ void SYSMi_SetLauncherMountInfo( void )
|
||||
void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle )
|
||||
{
|
||||
OSMountInfo mountListBuffer[ DEFAULT_MOUNT_LIST_NUM ] ATTRIBUTE_ALIGN(4);
|
||||
ROM_Header_Short *pROMH = ( ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF;
|
||||
ROM_Header_Short *pROMH = ( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF;
|
||||
// アプリがTWL対応でない場合は、何もセットせずにリターン
|
||||
if( ( pROMH->platform_code ) == 0 ) {
|
||||
return;
|
||||
@ -225,8 +225,8 @@ static void SYSMi_ModifySaveDataMount( LauncherBootType bootType, NAMTitleId tit
|
||||
) {
|
||||
char saveFilePath[ 2 ][ FS_ENTRY_LONGNAME_MAX ];
|
||||
u32 saveDataSize[ 2 ];
|
||||
saveDataSize[ 0 ] = (( ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF)->private_save_data_size;
|
||||
saveDataSize[ 1 ] = (( ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF)->public_save_data_size;
|
||||
saveDataSize[ 0 ] = (( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF)->private_save_data_size;
|
||||
saveDataSize[ 1 ] = (( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF)->public_save_data_size;
|
||||
|
||||
// セーブデータのファイルパスを取得
|
||||
NAM_GetTitleSaveFilePath( saveFilePath[ 1 ], saveFilePath[ 0 ], titleID );
|
||||
|
||||
Binary file not shown.
@ -52,19 +52,19 @@ extern u32 SDK_AUTOLOAD_WRAM_START[];
|
||||
|
||||
#define SYSM_DMA_BUFOVER_BARRIER_SIZE 0x0200
|
||||
|
||||
// カードアプリ格納バッファ
|
||||
#define SYSM_CARD_ROM_HEADER_SIZE 0x1000
|
||||
// カードアプリ格納バッファ(ROMヘッダバッファはNANDアプリでも使用)
|
||||
#define SYSM_APP_ROM_HEADER_SIZE 0x1000
|
||||
|
||||
//#ifdef DEBUG_USED_CARD_SLOT_B_
|
||||
#define SYSM_CARD_BANNER_BUF ( SYSM_OWN_ARM9_MMEM_ADDR_END )
|
||||
#define SYSM_CARD_BANNER_BUF_END ( SYSM_CARD_BANNER_BUF + 0x3000 )
|
||||
#define SYSM_CARD_ROM_HEADER_BUF ( SYSM_CARD_BANNER_BUF_END )
|
||||
#define SYSM_APP_ROM_HEADER_BUF ( SYSM_CARD_BANNER_BUF_END )
|
||||
#if 0
|
||||
#define SYSM_CARD_ROM_HEADER_BUF ( SYSM_OWN_ARM9_MMEM_ADDR_END )
|
||||
#define SYSM_APP_ROM_HEADER_BUF ( SYSM_OWN_ARM9_MMEM_ADDR_END )
|
||||
#endif
|
||||
#define SYSM_CARD_ROM_HEADER_BUF_END ( SYSM_CARD_ROM_HEADER_BUF + SYSM_CARD_ROM_HEADER_SIZE )
|
||||
#define SYSM_CARD_ROM_HEADER_BAK ( SYSM_CARD_ROM_HEADER_BUF_END )
|
||||
#define SYSM_CARD_ROM_HEADER_BAK_END ( SYSM_CARD_ROM_HEADER_BAK + SYSM_CARD_ROM_HEADER_SIZE )
|
||||
#define SYSM_APP_ROM_HEADER_BUF_END ( SYSM_APP_ROM_HEADER_BUF + SYSM_APP_ROM_HEADER_SIZE )
|
||||
#define SYSM_CARD_ROM_HEADER_BAK ( SYSM_APP_ROM_HEADER_BUF_END )
|
||||
#define SYSM_CARD_ROM_HEADER_BAK_END ( SYSM_CARD_ROM_HEADER_BAK + SYSM_APP_ROM_HEADER_SIZE )
|
||||
#define SYSM_CARD_NTR_SECURE_BUF ( SYSM_CARD_ROM_HEADER_BAK_END )
|
||||
#define SYSM_CARD_NTR_SECURE_BUF_END ( SYSM_CARD_NTR_SECURE_BUF + SECURE_AREA_SIZE )
|
||||
#define SYSM_CARD_TWL_SECURE_BUF ( SYSM_CARD_NTR_SECURE_BUF_END )
|
||||
|
||||
@ -200,8 +200,9 @@ typedef struct SDKBootCheckInfo{
|
||||
// NANDファームがロードしてくれているマイコンフリーレジスタ値の取得
|
||||
#define SYSMi_GetMCUFreeRegisterValue() ( *(vu8 *)HW_RESET_PARAMETER_BUF )
|
||||
|
||||
// カードROMヘッダワークの取得
|
||||
#define SYSM_GetCardRomHeader() ( (ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF )
|
||||
// ROMヘッダワークの取得
|
||||
#define SYSM_GetAppRomHeader() ( (ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF )
|
||||
#define SYSM_GetCardRomHeader() SYSM_GetAppRomHeader()
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user