mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
リセットの確認後にメインメモリを初期化
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@42 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
7a88f50dee
commit
3c19775567
@ -87,6 +87,26 @@ SDK_WEAK_SYMBOL asm void _start( void )
|
||||
msr cpsr_csfx, r0
|
||||
sub sp, r1, #4 // 4byte for stack check code
|
||||
|
||||
//---- read reset flag from pmic
|
||||
#ifdef TWL_PLATFORM_TS
|
||||
mov r0, #REG_PMIC_SW_FLAGS_ADDR
|
||||
bl PMi_GetRegister
|
||||
ands r0, r0, #PMIC_SW_FLAGS_WARMBOOT
|
||||
movne r0, #FIRM_PXI_ID_WARMBOOT
|
||||
moveq r0, #FIRM_PXI_ID_COLDBOOT
|
||||
bl PXI_SendByIntf
|
||||
mov r0, #FIRM_PXI_ID_INIT_MMEM
|
||||
bl PXI_WaitByIntf
|
||||
#endif // TWL_PLATFORM_TS
|
||||
|
||||
//---- wait for main memory mode into burst mode
|
||||
ldr r3, =REG_EXMEMCNT_L_ADDR
|
||||
mov r1, #REG_MI_EXMEMCNT_L_ECE2_MASK
|
||||
@1:
|
||||
ldrh r2, [r3]
|
||||
tst r2, r1
|
||||
beq @1
|
||||
|
||||
#if 0
|
||||
// move parameters from IPL's work memory to shared area
|
||||
ldr r0, =IPL_PARAM_CARD_ROM_HEADER
|
||||
@ -106,14 +126,6 @@ SDK_WEAK_SYMBOL asm void _start( void )
|
||||
bmi @1_2
|
||||
#endif
|
||||
|
||||
//---- wait for main memory mode into burst mode
|
||||
ldr r3, =REG_EXMEMCNT_L_ADDR
|
||||
mov r1, #REG_MI_EXMEMCNT_L_ECE2_MASK
|
||||
@1:
|
||||
ldrh r2, [r3]
|
||||
tst r2, r1
|
||||
beq @1
|
||||
|
||||
//---- load autoload block and initialize bss
|
||||
bl do_autoload
|
||||
|
||||
|
||||
@ -64,12 +64,6 @@ SDK_WEAK_SYMBOL asm void _start( void )
|
||||
mov r12, #HW_REG_BASE
|
||||
str r12, [r12, #REG_IME_OFFSET]
|
||||
|
||||
//---- initialize Main Memory
|
||||
bl MIi_InitMainMemCR
|
||||
|
||||
//---- initialize cp15
|
||||
bl init_cp15
|
||||
|
||||
//---- initialize stack pointer
|
||||
// SVC mode
|
||||
mov r0, #HW_PSR_SVC_MODE
|
||||
@ -94,6 +88,29 @@ SDK_WEAK_SYMBOL asm void _start( void )
|
||||
mov r0, #HW_PSR_SYS_MODE
|
||||
msr cpsr_csfx, r0
|
||||
sub sp, r1, #4 // 4byte for stack check code
|
||||
//---- read reset flag from pmic
|
||||
|
||||
#ifdef TWL_PLATFORM_TS
|
||||
@0: bl PXI_RecvByIntf
|
||||
cmp r0, #FIRM_PXI_ID_COLDBOOT
|
||||
cmpne r0, #FIRM_PXI_ID_WARMBOOT
|
||||
bne @0
|
||||
|
||||
//---- initialize Main Memory
|
||||
cmp r0, #FIRM_PXI_ID_COLDBOOT
|
||||
bleq MIi_InitMainMemCR
|
||||
|
||||
mov r0, #FIRM_PXI_ID_INIT_MMEM
|
||||
bl PXI_SendByIntf
|
||||
|
||||
#else // TWL_PLATFORM_BB
|
||||
//---- initialize Main Memory
|
||||
bl MIi_InitMainMemCR
|
||||
|
||||
#endif // TWL_PLATFORM_BB
|
||||
|
||||
//---- initialize cp15
|
||||
bl init_cp15
|
||||
|
||||
//---- clear memory
|
||||
// DTCM (16KB)
|
||||
|
||||
@ -28,22 +28,24 @@ extern "C" {
|
||||
typedef enum
|
||||
{
|
||||
// from ARM7
|
||||
FIRM_PXI_ID_INIT_ARM7 = 3,
|
||||
FIRM_PXI_ID_LOAD_HEADER = 8,
|
||||
FIRM_PXI_ID_COLDBOOT = 1,
|
||||
FIRM_PXI_ID_WARMBOOT = 2,
|
||||
|
||||
FIRM_PXI_ID_INIT_ARM7 = 7,
|
||||
FIRM_PXI_ID_LOAD_HEADER = 6,
|
||||
FIRM_PXI_ID_LOAD_ARM9_STATIC = 5,
|
||||
FIRM_PXI_ID_LOAD_ARM7_STATIC = 6,
|
||||
FIRM_PXI_ID_LOAD_ARM9_LTD_STATIC = 9,
|
||||
FIRM_PXI_ID_LOAD_ARM7_LTD_STATIC = 10,
|
||||
FIRM_PXI_ID_LOAD_PIRIOD = 11,
|
||||
FIRM_PXI_ID_LOAD_ARM7_STATIC = 4,
|
||||
FIRM_PXI_ID_LOAD_ARM9_LTD_STATIC = 3,
|
||||
FIRM_PXI_ID_LOAD_ARM7_LTD_STATIC = 2,
|
||||
FIRM_PXI_ID_LOAD_PIRIOD = 1,
|
||||
|
||||
// from ARM9
|
||||
FIRM_PXI_ID_INIT_ARM9 = 1,
|
||||
FIRM_PXI_ID_AUTH_HEADER = 8,
|
||||
FIRM_PXI_ID_AUTH_ARM9_STATIC = 5,
|
||||
FIRM_PXI_ID_AUTH_ARM7_STATIC = 6,
|
||||
FIRM_PXI_ID_AUTH_ARM9_LTD_STATIC = 9,
|
||||
FIRM_PXI_ID_AUTH_ARM7_LTD_STATIC = 10,
|
||||
FIRM_PXI_ID_DONE_WRAM_SETTING = 11,
|
||||
FIRM_PXI_ID_INIT_ARM9 = 9,
|
||||
FIRM_PXI_ID_AUTH_HEADER = 10,
|
||||
FIRM_PXI_ID_AUTH_ARM9_STATIC = 11,
|
||||
FIRM_PXI_ID_AUTH_ARM7_STATIC = 12,
|
||||
FIRM_PXI_ID_AUTH_ARM9_LTD_STATIC = 13,
|
||||
FIRM_PXI_ID_AUTH_ARM7_LTD_STATIC = 14,
|
||||
|
||||
// from both of ARM9 and ARM7
|
||||
FIRM_PXI_ID_NULL = 0,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user