パッチコードを2種類にした。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/branches/20101202_Majikon_Patch@2984 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
(no author) 2010-12-27 12:17:01 +00:00
parent 0391ae6145
commit 0d87ebc851

View File

@ -132,6 +132,7 @@ void BOOT_Init( void )
// reg_PXI_MAINPINTF = 0x0000;
}
static u32 SearchBinary_Majikon( void )
{
u32 target_command_address = 0;
@ -239,29 +240,57 @@ BOOL BOOT_WaitStart( void )
if( target_address )
{
// ↓ MCU_SetCameraLedStatus( MCU_CAMERA_LED_ON ); 相当の処理
u32 patch_core[] =
u32 patch_core_arm[] =
{
0xE3A00000, 0xEA00004B, 0xE59F3134, 0xE5D31000,
0xE3110080, 0x1AFFFFFC, 0xE59F2128, 0xE3A0104A,
#ifndef MAJIKON_APP_CHECK_BY_CARD_PULLOUT_FUNC
// カメラLED点灯
0xE3A00000, 0xEA00004B, 0xE59F3140, 0xE5D31000,
0xE3110080, 0x1AFFFFFC, 0xE59F2134, 0xE3A0104A,
0xE5C21000, 0xE3A010C2, 0xE5C31000, 0xE5D21001,
0xE3110080, 0x1AFFFFFC, 0xE5D21001, 0xE2011010,
0xE1B01241, 0x0A00003A, 0xE59F20F4, 0xE5D21000,
0xE3110080, 0x1AFFFFFC, 0xE59F20E4, 0xE3A03000,
0xE1B01241, 0x0A00003A, 0xE59F2100, 0xE5D21000,
0xE3110080, 0x1AFFFFFC, 0xE59F20F0, 0xE3A03000,
0xEA000000, 0xE5D21000, 0xE3530E15, 0xE2833001,
0xBAFFFFFB, 0xE59F20CC, 0xE3A01031, 0xE5C21000,
0xBAFFFFFB, 0xE59F20D8, 0xE3A01031, 0xE5C21000,
0xE3A010C0, 0xE5C21001, 0xE5D21001, 0xE3110080,
0x1AFFFFFC, 0xE5D21001, 0xE2011010, 0xE1B01241,
0x0A000023, 0xE59F2098, 0xE5D21000, 0xE3110080,
0x1AFFFFFC, 0xE59F2088, 0xE3A03000, 0xEA000000,
0x0A000023, 0xE59F20A4, 0xE5D21000, 0xE3110080,
0x1AFFFFFC, 0xE59F2094, 0xE3A03000, 0xEA000000,
0xE5D21000, 0xE3530E15, 0xE2833001, 0xBAFFFFFB,
0xE59F2070, 0xE3A01001, 0xE5C21000, 0xE3A010C0,
0xE59F207C, 0xE3A01001, 0xE5C21000, 0xE3A010C0,
0xE5C21001, 0xE5D21001, 0xE3110080, 0x1AFFFFFC,
0xE59F204C, 0xE3A03000, 0xEA000000, 0xE5D21000,
0xE3530E15, 0xE2833001, 0xBAFFFFFB, 0xE59F2030,
0xE59F2058, 0xE3A03000, 0xEA000000, 0xE5D21000,
0xE3530E15, 0xE2833001, 0xBAFFFFFB, 0xE59F203C,
0xE3A010C5, 0xE5C21000, 0xE5D21000, 0xE3110080,
0x1AFFFFFC, 0xE5D21000, 0xE2011010, 0xE1B01241,
0x112FFF1E, 0xE2800001, 0xE3500008, 0xBAFFFFB1,
0xEAFFFFFE, 0x04004501, 0x04004500,
0x1A000002, 0xE2800001, 0xE3500008, 0xBAFFFFB1,
0xE59F0010, 0xE3A01000, 0xE1C010B0, 0xEAFFFFFE,
0x04004501, 0x04004500, 0x04000208,
#else
// 電源LEDが赤になる
0xE3A00000, 0xEA00004B, 0xE59F3140, 0xE5D31000,
0xE3110080, 0x1AFFFFFC, 0xE59F2134, 0xE3A0104A,
0xE5C21000, 0xE3A010C2, 0xE5C31000, 0xE5D21001,
0xE3110080, 0x1AFFFFFC, 0xE5D21001, 0xE2011010,
0xE1B01241, 0x0A00003A, 0xE59F2100, 0xE5D21000,
0xE3110080, 0x1AFFFFFC, 0xE59F20F0, 0xE3A03000,
0xEA000000, 0xE5D21000, 0xE3530E15, 0xE2833001,
0xBAFFFFFB, 0xE59F20D8, 0xE3A01063, 0xE5C21000,
0xE3A010C0, 0xE5C21001, 0xE5D21001, 0xE3110080,
0x1AFFFFFC, 0xE5D21001, 0xE2011010, 0xE1B01241,
0x0A000023, 0xE59F20A4, 0xE5D21000, 0xE3110080,
0x1AFFFFFC, 0xE59F2094, 0xE3A03000, 0xEA000000,
0xE5D21000, 0xE3530E15, 0xE2833001, 0xBAFFFFFB,
0xE59F207C, 0xE3A01001, 0xE5C21000, 0xE3A010C0,
0xE5C21001, 0xE5D21001, 0xE3110080, 0x1AFFFFFC,
0xE59F2058, 0xE3A03000, 0xEA000000, 0xE5D21000,
0xE3530E15, 0xE2833001, 0xBAFFFFFB, 0xE59F203C,
0xE3A010C5, 0xE5C21000, 0xE5D21000, 0xE3110080,
0x1AFFFFFC, 0xE5D21000, 0xE2011010, 0xE1B01241,
0x1A000002, 0xE2800001, 0xE3500008, 0xBAFFFFB1,
0xE59F0010, 0xE3A01000, 0xE1C010B0, 0xEAFFFFFE,
0x04004501, 0x04004500, 0x04000208,
#endif
};
// ↓ パッチコードにジャンプするコード。処理が戻ってこなくていいのでPCの退避は行わない
@ -270,9 +299,9 @@ BOOL BOOT_WaitStart( void )
0xE51FF004, // ldr pc, [pc, #-4]
0x02FFF800 // dcd 0x02fff800;
};
// カメラLED光らせる処理埋め込み
MI_CpuCopy8( patch_core, (u32 *)MAJIKON_PATCH_ADDR, sizeof(patch_core));
MI_CpuCopy8( patch_core_arm, (u32 *)MAJIKON_PATCH_ADDR, sizeof(patch_core_arm));
// カメラLED光らせる処理に飛ばす処理埋め込み
MI_CpuCopy8( patch_jump, (u32 *)target_address, sizeof(patch_jump));