mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
(更新: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:
parent
d395ebf8d2
commit
fe9a50bcf1
@ -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();
|
||||
|
||||
@ -208,9 +208,11 @@ 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();
|
||||
PXI_SetFifoRecvCallback(PXI_FIFO_TAG_HOTSW, InterruptCallbackPxi);
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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; // カードリソース排他制御用
|
||||
|
||||
Loading…
Reference in New Issue
Block a user