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 );
|
PMi_SetControl( PMIC_CTL_BKLT1 | PMIC_CTL_BKLT2 );
|
||||||
|
|
||||||
|
#ifdef INITIAL_KEYTABLE_PRELOAD
|
||||||
|
HOTSW_CopyInitialKeyTable();
|
||||||
|
#endif
|
||||||
|
|
||||||
// OS <20>‰Šú‰»
|
// OS <20>‰Šú‰»
|
||||||
OS_Init();
|
OS_Init();
|
||||||
PrintDebugInfo();
|
PrintDebugInfo();
|
||||||
|
|||||||
@ -208,9 +208,11 @@ void HOTSW_Init(u32 threadPrio)
|
|||||||
OS_InitTick();
|
OS_InitTick();
|
||||||
OS_InitThread();
|
OS_InitThread();
|
||||||
|
|
||||||
|
#ifndef INITIAL_KEYTABLE_PRELOAD
|
||||||
// 初期化後に他の用途でWRAM_0を使用できるようにローカルバッファへコピーしておく
|
// 初期化後に他の用途でWRAM_0を使用できるようにローカルバッファへコピーしておく
|
||||||
MI_CpuCopyFast((void *)HW_WRAM_0_LTD, &HotSwBlowfishInitTableBufDS, sizeof(BLOWFISH_CTX));
|
MI_CpuCopyFast((void *)HW_WRAM_0_LTD, &HotSwBlowfishInitTableBufDS, sizeof(BLOWFISH_CTX));
|
||||||
|
#endif
|
||||||
|
|
||||||
// PXI初期化
|
// PXI初期化
|
||||||
PXI_Init();
|
PXI_Init();
|
||||||
PXI_SetFifoRecvCallback(PXI_FIFO_TAG_HOTSW, InterruptCallbackPxi);
|
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
|
Name: LoadCardData
|
||||||
|
|
||||||
|
|||||||
@ -61,7 +61,7 @@ static TitleProperty s_bootTitleBuf;
|
|||||||
//
|
//
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
#if 0
|
#if 1
|
||||||
// AutoloadDoneCallbackを利用して鍵を引き渡す
|
// AutoloadDoneCallbackを利用して鍵を引き渡す
|
||||||
void _start_AutoloadDoneCallback(void* argv[])
|
void _start_AutoloadDoneCallback(void* argv[])
|
||||||
{
|
{
|
||||||
@ -81,7 +81,7 @@ void SYSM_Init( void *(*pAlloc)(u32), void (*pFree)(void*) )
|
|||||||
#endif /* SYSM_DEBUG_ */
|
#endif /* SYSM_DEBUG_ */
|
||||||
|
|
||||||
// ARM7で使用する分の鍵を渡す
|
// ARM7で使用する分の鍵を渡す
|
||||||
SYSMi_SendKeysToARM7();
|
//SYSMi_SendKeysToARM7();
|
||||||
|
|
||||||
// ランチャーのマウント情報セット
|
// ランチャーのマウント情報セット
|
||||||
//SYSMi_SetLauncherMountInfo();
|
//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 );
|
// 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) );
|
DC_FlushRange( (void *)HW_WRAM_0, sizeof(DeliverBROM9Key) );
|
||||||
MI_SetWramBank(MI_WRAM_ARM7_ALL);
|
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 -------------------------------------------------------------------
|
||||||
#define SYSM_HOTSW_ENABLE_ROMEMU
|
#define SYSM_HOTSW_ENABLE_ROMEMU
|
||||||
#define USE_WRAM_LOAD
|
#define USE_WRAM_LOAD
|
||||||
//#define INITIAL_KEYTABLE_PRELOAD
|
#define INITIAL_KEYTABLE_PRELOAD
|
||||||
//#define USE_NEW_DMA
|
//#define USE_NEW_DMA
|
||||||
//#define HOTSW_NO_MESSAGE // Printf抑制スイッチ
|
//#define HOTSW_NO_MESSAGE // Printf抑制スイッチ
|
||||||
|
|
||||||
@ -39,8 +39,8 @@ extern "C" {
|
|||||||
#define HOTSW_PutString OS_PutString
|
#define HOTSW_PutString OS_PutString
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
#define HOTSW_TPrintf( ... ) ((void)0)
|
#define HOTSW_TPrintf( ... ) ((void)0)
|
||||||
#define HOTSW_PutString( ... ) ((void)0)
|
#define HOTSW_PutString( ... ) ((void)0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// enum -------------------------------------------------------------------
|
// enum -------------------------------------------------------------------
|
||||||
@ -170,6 +170,11 @@ CardDataReadState HOTSW_ReadCardDataOnGameMode(const void* src, void* dest, u32
|
|||||||
// 活栓挿抜処理の初期化
|
// 活栓挿抜処理の初期化
|
||||||
void HOTSW_Init(u32 threadPrio);
|
void HOTSW_Init(u32 threadPrio);
|
||||||
|
|
||||||
|
#ifdef INITIAL_KEYTABLE_PRELOAD
|
||||||
|
// DS互換BlowfishテーブルをWRAM経由でローカルにコピーする
|
||||||
|
void HOTSW_CopyInitialKeyTable(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
// カードの存在判定
|
// カードの存在判定
|
||||||
BOOL HOTSW_IsCardExist(void);
|
BOOL HOTSW_IsCardExist(void);
|
||||||
|
|
||||||
|
|||||||
@ -119,8 +119,9 @@ typedef struct SYSM_work {
|
|||||||
vu16 :0;
|
vu16 :0;
|
||||||
vu8 isCardStateChanged; // カード状態更新フラグ
|
vu8 isCardStateChanged; // カード状態更新フラグ
|
||||||
vu8 isBusyHotSW; // 活線挿抜処理中?
|
vu8 isBusyHotSW; // 活線挿抜処理中?
|
||||||
|
vu8 isKeyTableLoadReady; // Key Tableのロード準備完了?
|
||||||
}hotsw;
|
}hotsw;
|
||||||
}flags; // 8B
|
}flags; // 9B
|
||||||
|
|
||||||
OSLockWord lockCardRsc ATTRIBUTE_ALIGN(8); // カードリソース排他制御用
|
OSLockWord lockCardRsc ATTRIBUTE_ALIGN(8); // カードリソース排他制御用
|
||||||
OSLockWord lockHotSW; // カードリソース排他制御用
|
OSLockWord lockHotSW; // カードリソース排他制御用
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user