リセットの確認後にメインメモリを初期化

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@42 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yutaka 2007-10-10 11:03:43 +00:00
parent 7a88f50dee
commit 3c19775567
3 changed files with 58 additions and 27 deletions

View File

@ -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

View File

@ -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)

View File

@ -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,