(更新:Akabane Jumpei)

Arm9からのInitial Key Tableの受け渡しを、HOTSW_Initより前に行うように修正。

ビルドスイッチで、以前の状態(HOTSW_Init時に受け渡し)に切り替え可。
デフォルトオンになっている。
#define INITIAL_KEYTABLE_PRELOAD (include/sysmenu/hotsw/common/hotsw.hで定義)


git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1981 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
(no author) 2008-07-24 07:01:13 +00:00
parent d395ebf8d2
commit fe9a50bcf1
5 changed files with 44 additions and 7 deletions

View File

@ -133,6 +133,10 @@ TwlSpMain(void)
}
PMi_SetControl( PMIC_CTL_BKLT1 | PMIC_CTL_BKLT2 );
#ifdef INITIAL_KEYTABLE_PRELOAD
HOTSW_CopyInitialKeyTable();
#endif
// OS <20>‰Šú‰»
OS_Init();
PrintDebugInfo();

View File

@ -208,8 +208,10 @@ void HOTSW_Init(u32 threadPrio)
OS_InitTick();
OS_InitThread();
#ifndef INITIAL_KEYTABLE_PRELOAD
// 初期化後に他の用途でWRAM_0を使用できるようにローカルバッファへコピーしておく
MI_CpuCopyFast((void *)HW_WRAM_0_LTD, &HotSwBlowfishInitTableBufDS, sizeof(BLOWFISH_CTX));
#endif
// PXI初期化
PXI_Init();
@ -307,6 +309,27 @@ void HOTSW_Init(u32 threadPrio)
}
/*---------------------------------------------------------------------------*
Name: HOTSW_CopyInitialKeyTable
Description: DS互換BlowfishテーブルをWRAM経由でローカルにコピーする
HOTSW_Initが呼ばれる前に呼んで下さい
*---------------------------------------------------------------------------*/
#ifdef INITIAL_KEYTABLE_PRELOAD
void HOTSW_CopyInitialKeyTable(void)
{
// ARM9でKey Tableの用意が出来るまでポーリング
while( !SYSMi_GetWork()->flags.hotsw.isKeyTableLoadReady ){
OS_SpinWait( 0x400 );
}
// 初期化後に他の用途でWRAM_0を使用できるようにローカルバッファへコピーしておく
MI_CpuCopyFast((void *)HW_WRAM_0_LTD, &HotSwBlowfishInitTableBufDS, sizeof(BLOWFISH_CTX));
}
#endif
/*---------------------------------------------------------------------------*
Name: LoadCardData

View File

@ -61,7 +61,7 @@ static TitleProperty s_bootTitleBuf;
//
// ============================================================================
#if 0
#if 1
// AutoloadDoneCallbackを利用して鍵を引き渡す
void _start_AutoloadDoneCallback(void* argv[])
{
@ -81,7 +81,7 @@ void SYSM_Init( void *(*pAlloc)(u32), void (*pFree)(void*) )
#endif /* SYSM_DEBUG_ */
// ARM7で使用する分の鍵を渡す
SYSMi_SendKeysToARM7();
//SYSMi_SendKeysToARM7();
// ランチャーのマウント情報セット
//SYSMi_SetLauncherMountInfo();
@ -140,6 +140,10 @@ void SYSMi_SendKeysToARM7( void )
// MI_CpuCopyFast( &((OSFromFirm9Buf *)HW_FIRM_FROM_FIRM_BUF)->aes_key[ 0 ], (void *)&GetDeliverBROM9KeyAddr()->aes_key[ 0 ], AES_KEY_SIZE );
DC_FlushRange( (void *)HW_WRAM_0, sizeof(DeliverBROM9Key) );
MI_SetWramBank(MI_WRAM_ARM7_ALL);
#ifdef INITIAL_KEYTABLE_PRELOAD
SYSMi_GetWork()->flags.hotsw.isKeyTableLoadReady = TRUE;
#endif
}

View File

@ -26,7 +26,7 @@ extern "C" {
// Define -------------------------------------------------------------------
#define SYSM_HOTSW_ENABLE_ROMEMU
#define USE_WRAM_LOAD
//#define INITIAL_KEYTABLE_PRELOAD
#define INITIAL_KEYTABLE_PRELOAD
//#define USE_NEW_DMA
//#define HOTSW_NO_MESSAGE // Printf抑制スイッチ
@ -39,8 +39,8 @@ extern "C" {
#define HOTSW_PutString OS_PutString
#endif
#else
#define HOTSW_TPrintf( ... ) ((void)0)
#define HOTSW_PutString( ... ) ((void)0)
#define HOTSW_TPrintf( ... ) ((void)0)
#define HOTSW_PutString( ... ) ((void)0)
#endif
// enum -------------------------------------------------------------------
@ -170,6 +170,11 @@ CardDataReadState HOTSW_ReadCardDataOnGameMode(const void* src, void* dest, u32
// 活栓挿抜処理の初期化
void HOTSW_Init(u32 threadPrio);
#ifdef INITIAL_KEYTABLE_PRELOAD
// DS互換BlowfishテーブルをWRAM経由でローカルにコピーする
void HOTSW_CopyInitialKeyTable(void);
#endif
// カードの存在判定
BOOL HOTSW_IsCardExist(void);

View File

@ -119,8 +119,9 @@ typedef struct SYSM_work {
vu16 :0;
vu8 isCardStateChanged; // カード状態更新フラグ
vu8 isBusyHotSW; // 活線挿抜処理中?
vu8 isKeyTableLoadReady; // Key Tableのロード準備完了
}hotsw;
}flags; // 8B
}flags; // 9B
OSLockWord lockCardRsc ATTRIBUTE_ALIGN(8); // カードリソース排他制御用
OSLockWord lockHotSW; // カードリソース排他制御用