mirror of
https://github.com/rvtr/ctr_firmware.git
synced 2025-10-31 07:51:08 -04:00
例外ハンドラの暫定登録。
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@137 b871894f-2f95-9b40-918c-086798483c85
This commit is contained in:
parent
80f6d66ef9
commit
12dcde5fdf
@ -36,7 +36,6 @@ asm void i_stupStartHandler( void )
|
||||
{
|
||||
PRESERVE8
|
||||
|
||||
INASM_EXTERN( STUPi_HW_DTCM )
|
||||
INASM_EXTERN( stupInitExceptions )
|
||||
INASM_EXTERN( BromMain )
|
||||
INASM_EXTERN( main )
|
||||
@ -63,13 +62,13 @@ asm void i_stupStartHandler( void )
|
||||
bl stupInitExceptions
|
||||
|
||||
//---- disable cp15
|
||||
bl stupDisableCP15
|
||||
bl stupDisableCP15
|
||||
|
||||
//---- initialize MMU
|
||||
bl stupInitMMU
|
||||
bl stupInitMMU
|
||||
|
||||
//---- enable cp15
|
||||
bl stupEnableCP15
|
||||
bl stupEnableCP15
|
||||
|
||||
//---- clear wram
|
||||
// 1KB
|
||||
|
||||
@ -35,6 +35,7 @@ asm void i_stupStartHandler( void )
|
||||
PRESERVE8
|
||||
|
||||
INASM_EXTERN( STUPi_HW_DTCM )
|
||||
INASM_EXTERN( stupInitExceptions )
|
||||
INASM_EXTERN( BromSpMain )
|
||||
INASM_EXTERN( main )
|
||||
|
||||
@ -47,9 +48,6 @@ asm void i_stupStartHandler( void )
|
||||
|
||||
#endif // BROM_ENABLE_BOOTROM_WRITE
|
||||
|
||||
//---- initialize cp15
|
||||
bl i_stupInitCP15
|
||||
|
||||
//---- initialize stack pointer
|
||||
// SVC mode
|
||||
mov r0, #HW_PSR_SVC_MODE
|
||||
@ -68,6 +66,12 @@ asm void i_stupStartHandler( void )
|
||||
ldr r0, =HW_BROM_SYS_STACK_END
|
||||
mov sp, r0
|
||||
|
||||
//---- initialize exceptions
|
||||
bl stupInitExceptions
|
||||
|
||||
//---- initialize cp15
|
||||
bl i_stupInitCP15
|
||||
|
||||
//---- clear wram
|
||||
// DTCM (16KB)
|
||||
mov r0, #0
|
||||
|
||||
@ -30,19 +30,48 @@
|
||||
*---------------------------------------------------------------------------*/
|
||||
ASM void stupInitExceptions( void )
|
||||
{
|
||||
ldr r3, =HW_SWI_VENEER_BUF
|
||||
ldr r2, =i_stupSwiVeneerCode
|
||||
ldm r2, {r0-r1}
|
||||
stm r3, {r0-r1}
|
||||
adr r2, i_stupExcpVennerCode
|
||||
ldr r3, =HW_EXCP_VENEER_BUF
|
||||
add r12, r3, #HW_EXCP_VENEER_BUF_SIZE
|
||||
LSYM(0)
|
||||
ldr r0, [r2], #4
|
||||
ldm r0, {r0-r1}
|
||||
stm r3!,{r0-r1}
|
||||
cmp r3, r12
|
||||
blt BSYM(0)
|
||||
bx lr
|
||||
|
||||
i_stupExcpVennerCode
|
||||
DCD i_stupSwiVeneerCode
|
||||
DCD i_stupExcpTerminateCode
|
||||
DCD i_stupSwiVeneerCode
|
||||
DCD i_stupExcpTerminateCode
|
||||
DCD i_stupExcpTerminateCode
|
||||
DCD i_stupExcpTerminateCode
|
||||
|
||||
LTORG
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: i_osIrqVeneer
|
||||
Name: i_stupExcpTerminateCode
|
||||
|
||||
Description: Interrupt Vevver
|
||||
Description: exception Veneer
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns: None
|
||||
*---------------------------------------------------------------------------*/
|
||||
ASM void i_stupExcpTerminateCode( void )
|
||||
{
|
||||
LSYM(0)
|
||||
b BSYM(0)
|
||||
LTORG
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: i_stupSwiVeneerCode
|
||||
|
||||
Description: SWI Veneer
|
||||
|
||||
Arguments: None
|
||||
|
||||
|
||||
@ -53,6 +53,7 @@ OSFiqMode;
|
||||
|
||||
//---- interrupt handler type
|
||||
//typedef IRQ void (*OSIntrHandler) (void);
|
||||
typedef void (*OSExcpHandler) (void);
|
||||
typedef void (*OSIntrHandler) (void);
|
||||
typedef void (*OSIntrFunction) (void);
|
||||
|
||||
|
||||
@ -41,12 +41,15 @@ extern "C" {
|
||||
#define HW_AXI_WRAM_SYSRV_OFS_INTR_CHECK0 0x50
|
||||
|
||||
//---- system reserved area
|
||||
#define HW_EXCP_VENEER_BUF (HW_INTR_VENEER_BUF)
|
||||
#define HW_EXCP_VENEER_BUF_END (HW_EXCP_VENEER_BUF + HW_EXCP_VENEER_BUF_SIZE)
|
||||
#define HW_EXCP_VENEER_BUF_SIZE (8 * 6)
|
||||
#define HW_INTR_VENEER_BUF (HW_AXI_WRAM_SYSRV + HW_AXI_WRAM_SYSRV_OFS_INTR_VENEER)
|
||||
#define HW_FIQ_VENEER_BUF (HW_AXI_WRAM_SYSRV + HW_AXI_WRAM_SYSRV_OFS_FIQ_VENEER)
|
||||
#define HW_SWI_VENEER_BUF (HW_AXI_WRAM_SYSRV + HW_AXI_WRAM_SYSRV_OFS_SWI_VENEER)
|
||||
#define HW_UDEF_VENEER_BUF (HW_AXI_WRAM_SYSRV + HW_AXI_WRAM_SYSRV_OFS_UDEF_VENEER)
|
||||
#define HW_IABT_VENEER_BUF (HW_AXI_WRAM_SYSRV + HW_AXI_WRAM_SYSRV_OFS_IABT_VENEER)
|
||||
#define HW_DABT_VENEER_BUF (HW_AXI_WRAM_SYSRV + HW_AXI_WRAM_SYSRV_OFS_DABT_VENEER)
|
||||
#define HW_UDEF_VENEER_BUF (HW_AXI_WRAM_SYSRV + HW_AXI_WRAM_SYSRV_OFS_UDEF_VENEER)
|
||||
#define HW_START_VECTOR1_BUF (HW_AXI_WRAM_SYSRV + HW_AXI_WRAM_SYSRV_OFS_START_VECTOR1)
|
||||
#define HW_INTR_CHECK0_BUF (HW_AXI_WRAM_SYSRV + HW_AXI_WRAM_SYSRV_OFS_INTR_CHECK0)
|
||||
#define HW_INTR_CHECK1_BUF (HW_AXI_WRAM_SYSRV + HW_AXI_WRAM_SYSRV_OFS_INTR_CHECK1)
|
||||
|
||||
@ -38,12 +38,15 @@ extern "C" {
|
||||
#define HW_PRV_WRAM_SYSRV_OFS_INTR_CHECK 0x3c
|
||||
|
||||
//---- system reserved area
|
||||
#define HW_EXCP_VENEER_BUF (HW_INTR_VENEER_BUF)
|
||||
#define HW_EXCP_VENEER_BUF_END (HW_EXCP_VENEER_BUF + HW_EXCP_VENEER_BUF_SIZE)
|
||||
#define HW_EXCP_VENEER_BUF_SIZE (8 * 6)
|
||||
#define HW_INTR_VENEER_BUF (HW_PRV_WRAM_SYSRV + HW_PRV_WRAM_SYSRV_OFS_INTR_VENEER)
|
||||
#define HW_FIQ_VENEER_BUF (HW_PRV_WRAM_SYSRV + HW_PRV_WRAM_SYSRV_OFS_FIQ_VENEER)
|
||||
#define HW_SWI_VENEER_BUF (HW_PRV_WRAM_SYSRV + HW_PRV_WRAM_SYSRV_OFS_SWI_VENEER)
|
||||
#define HW_UDEF_VENEER_BUF (HW_PRV_WRAM_SYSRV + HW_PRV_WRAM_SYSRV_OFS_UDEF_VENEER)
|
||||
#define HW_IABT_VENEER_BUF (HW_PRV_WRAM_SYSRV + HW_PRV_WRAM_SYSRV_OFS_IABT_VENEER)
|
||||
#define HW_DABT_VENEER_BUF (HW_PRV_WRAM_SYSRV + HW_PRV_WRAM_SYSRV_OFS_DABT_VENEER)
|
||||
#define HW_UDEF_VENEER_BUF (HW_PRV_WRAM_SYSRV + HW_PRV_WRAM_SYSRV_OFS_UDEF_VENEER)
|
||||
#define HW_INTR_CHECK_BUF (HW_PRV_WRAM_SYSRV + HW_PRV_WRAM_SYSRV_OFS_INTR_CHECK)
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user