diff --git a/trunk/bootrom/build/libraries/init/ARM11/crt0_secure.c b/trunk/bootrom/build/libraries/init/ARM11/crt0_secure.c index 5363e7c..0738208 100644 --- a/trunk/bootrom/build/libraries/init/ARM11/crt0_secure.c +++ b/trunk/bootrom/build/libraries/init/ARM11/crt0_secure.c @@ -42,19 +42,19 @@ asm void i_stupStartHandler( void ) //---- initialize stack pointer // SVC mode - mov r0, #HW_PSR_SVC_MODE - msr cpsr_c, r0 + mov r0, #HW_PSR_SVC_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE + msr cpsr_fsxc, r0 ldr sp, =HW_BROM_SVC_STACK_END // IRQ mode - mov r0, #HW_PSR_IRQ_MODE - msr cpsr_c, r0 + mov r0, #HW_PSR_IRQ_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE + msr cpsr_fsxc, r0 ldr r0, =HW_BROM_IRQ_STACK_END mov sp, r0 // System mode - mov r0, #HW_PSR_SYS_MODE - msr cpsr_csfx, r0 + mov r0, #HW_PSR_SYS_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE + msr cpsr_fsxc, r0 ldr r0, =HW_BROM_SYS_STACK_END mov sp, r0 @@ -71,11 +71,15 @@ asm void i_stupStartHandler( void ) bl stupEnableCP15 //---- clear wram - // 1KB + // 4KB mov r0, #0 - ldr r1, =HW_AXI_WRAM_END - mov r2, #0x0400 - sub r1, r1, r2 + ldr r1, =HW_AXI_WRAM_SHARED_SYS + ldr r2, =HW_EXCP_VENEER_BUF + sub r2, r2, r1 + bl i_stupCpuClear32 + + ldr r1, =HW_EXCP_VENEER_BUF_END + rsb r2, r1, #HW_AXI_WRAM_END bl i_stupCpuClear32 //---- lnitialize sections diff --git a/trunk/bootrom/build/libraries/init/ARM9/crt0_secure_sp.c b/trunk/bootrom/build/libraries/init/ARM9/crt0_secure_sp.c index 8c6086f..9b0b8a5 100644 --- a/trunk/bootrom/build/libraries/init/ARM9/crt0_secure_sp.c +++ b/trunk/bootrom/build/libraries/init/ARM9/crt0_secure_sp.c @@ -50,19 +50,19 @@ asm void i_stupStartHandler( void ) //---- initialize stack pointer // SVC mode - mov r0, #HW_PSR_SVC_MODE - msr cpsr_c, r0 + mov r0, #HW_PSR_SVC_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE + msr cpsr_fsxc, r0 ldr sp, =HW_BROM_SVC_STACK_END // IRQ mode - mov r0, #HW_PSR_IRQ_MODE - msr cpsr_c, r0 + mov r0, #HW_PSR_IRQ_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE + msr cpsr_fsxc, r0 ldr r0, =HW_BROM_IRQ_STACK_END mov sp, r0 // System mode - mov r0, #HW_PSR_SYS_MODE - msr cpsr_csfx, r0 + mov r0, #HW_PSR_SYS_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE + msr cpsr_fsxc, r0 ldr r0, =HW_BROM_SYS_STACK_END mov sp, r0 @@ -79,11 +79,16 @@ asm void i_stupStartHandler( void ) mov r2, #HW_DTCM_SIZE bl i_stupCpuClear32 - // 1KB + // 64B mov r0, #0 - ldr r1, =HW_PRV_WRAM_END - mov r2, #0x0400 - sub r1, r1, r2 + ldr r1, =HW_PRV_WRAM_SYSRV + ldr r2, =HW_EXCP_VENEER_BUF + sub r2, r2, r1 + bl i_stupCpuClear32 + + ldr r1, =HW_EXCP_VENEER_BUF_END + ldr r2, =HW_PRV_WRAM_SYSRV_END + sub r2, r2, r1 bl i_stupCpuClear32 //---- lnitialize sections diff --git a/trunk/bootrom/build/libraries/init/common/crt0_excp.c b/trunk/bootrom/build/libraries/init/common/crt0_excp.c index 93a4fd4..cccb53d 100644 --- a/trunk/bootrom/build/libraries/init/common/crt0_excp.c +++ b/trunk/bootrom/build/libraries/init/common/crt0_excp.c @@ -42,7 +42,7 @@ LSYM(0) bx lr i_stupExcpVennerCode - DCD i_stupSwiVeneerCode + DCD i_stupExcpTerminateCode DCD i_stupExcpTerminateCode DCD i_stupSwiVeneerCode DCD i_stupExcpTerminateCode @@ -55,7 +55,7 @@ i_stupExcpVennerCode /*---------------------------------------------------------------------------* Name: i_stupExcpTerminateCode - Description: exception Veneer + Description: exception veneer code Arguments: None @@ -63,15 +63,14 @@ i_stupExcpVennerCode *---------------------------------------------------------------------------*/ ASM void i_stupExcpTerminateCode( void ) { -LSYM(0) - b BSYM(0) + ldr pc, =i_stupExcpTerminateCode LTORG } /*---------------------------------------------------------------------------* Name: i_stupSwiVeneerCode - Description: SWI Veneer + Description: SWI veneer code Arguments: None