stupInitExceptions追加。

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@136 b871894f-2f95-9b40-918c-086798483c85
This commit is contained in:
nakasima 2008-12-19 11:02:31 +00:00
parent fd439a38ea
commit 80f6d66ef9
4 changed files with 62 additions and 11 deletions

View File

@ -36,7 +36,8 @@ asm void i_stupStartHandler( void )
{ {
PRESERVE8 PRESERVE8
INASM_EXTERN( i_stupHW_DTCM ) INASM_EXTERN( STUPi_HW_DTCM )
INASM_EXTERN( stupInitExceptions )
INASM_EXTERN( BromMain ) INASM_EXTERN( BromMain )
INASM_EXTERN( main ) INASM_EXTERN( main )
@ -58,6 +59,9 @@ asm void i_stupStartHandler( void )
ldr r0, =HW_BROM_SYS_STACK_END ldr r0, =HW_BROM_SYS_STACK_END
mov sp, r0 mov sp, r0
//---- initialize exceptions
bl stupInitExceptions
//---- disable cp15 //---- disable cp15
bl stupDisableCP15 bl stupDisableCP15

View File

@ -18,6 +18,42 @@
#include <brom/os.h> #include <brom/os.h>
#include <brom/swi.h> #include <brom/swi.h>
/*---------------------------------------------------------------------------*
Name: stupInitExceptions
Description: Initialize Exceptions
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
ASM void stupInitExceptions( void )
{
ldr r3, =HW_SWI_VENEER_BUF
ldr r2, =i_stupSwiVeneerCode
ldm r2, {r0-r1}
stm r3, {r0-r1}
bx lr
LTORG
}
/*---------------------------------------------------------------------------*
Name: i_osIrqVeneer
Description: Interrupt Vevver
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
ASM void i_stupSwiVeneerCode( void )
{
ldr pc, =i_stupSwiHandler
LTORG
}
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: i_stupDbgHandler Name: i_stupDbgHandler
@ -27,7 +63,7 @@
Returns: None. Returns: None.
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
asm void i_stupDbgHandler( void ) ASM void i_stupDbgHandler( void )
{ {
mrs sp, cpsr // IRQ/FIQ•s‰Â mrs sp, cpsr // IRQ/FIQ•s‰Â
orr sp, sp, #HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE orr sp, sp, #HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE
@ -48,7 +84,7 @@ dbg_m
Returns: None. Returns: None.
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
asm void i_stupIrqVeneer( void ) ASM void i_stupIrqVeneer( void )
{ {
ldr pc, =HW_INTR_VENEER_BUF ldr pc, =HW_INTR_VENEER_BUF
@ -64,7 +100,7 @@ asm void i_stupIrqVeneer( void )
Returns: None. Returns: None.
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
asm void i_stupFiqVeneer( void ) ASM void i_stupFiqVeneer( void )
{ {
ldr pc, =HW_FIQ_VENEER_BUF ldr pc, =HW_FIQ_VENEER_BUF
@ -80,7 +116,7 @@ asm void i_stupFiqVeneer( void )
Returns: None. Returns: None.
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
asm void i_stupPrefetchAbortVeneer( void ) ASM void i_stupPrefetchAbortVeneer( void )
{ {
ldr pc, =HW_IABT_VENEER_BUF ldr pc, =HW_IABT_VENEER_BUF
@ -96,7 +132,7 @@ asm void i_stupPrefetchAbortVeneer( void )
Returns: None. Returns: None.
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
asm void i_stupDataAbortVeneer( void ) ASM void i_stupDataAbortVeneer( void )
{ {
ldr pc, =HW_DABT_VENEER_BUF ldr pc, =HW_DABT_VENEER_BUF
@ -112,7 +148,7 @@ asm void i_stupDataAbortVeneer( void )
Returns: None. Returns: None.
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
asm void i_stupUndefInstVeneer( void ) ASM void i_stupUndefInstVeneer( void )
{ {
ldr pc, =HW_UDEF_VENEER_BUF ldr pc, =HW_UDEF_VENEER_BUF
@ -128,13 +164,14 @@ asm void i_stupUndefInstVeneer( void )
Returns: None. Returns: None.
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
asm void i_stupSwiVeneer( void ) ASM void i_stupSwiVeneer( void )
{ {
ldr pc, =HW_SWI_VENEER_BUF ldr pc, =HW_SWI_VENEER_BUF
LTORG LTORG
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: i_stupSwiHandler Name: i_stupSwiHandler
@ -144,14 +181,14 @@ asm void i_stupSwiVeneer( void )
Returns: None. Returns: None.
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
asm void i_stupSwiSemihosting( void ) ASM void i_stupSwiSemihosting( void )
{ {
ldmfd sp!, {r11, r12, lr} ldmfd sp!, {r11, r12, lr}
semi_vector semi_vector
movs pc, lr movs pc, lr
} }
asm void i_stupSwiHandler( void ) ASM void i_stupSwiHandler( void )
{ {
INASM_EXTERN( _start ) INASM_EXTERN( _start )

View File

@ -109,7 +109,6 @@ asm void i_osIrqVeneer( void )
ldr pc, =osIrqHandler ldr pc, =osIrqHandler
LTORG LTORG
} }
#include <brom/codereset.h> #include <brom/codereset.h>
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*

View File

@ -21,6 +21,17 @@
extern "C" { extern "C" {
#endif #endif
/*---------------------------------------------------------------------------*
Name: stupInitExcptions
Description: Initialize Excptions
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
void stupInitExcptions( void );
#ifdef SDK_ARM11 #ifdef SDK_ARM11
void i_stupPostMappingWram( void ); void i_stupPostMappingWram( void );
void i_stupNotifyToARM9( u32 id ); void i_stupNotifyToARM9( u32 id );