From 32a52af0e82b79ce8bb7879d2df883e4e0d660d9 Mon Sep 17 00:00:00 2001 From: nakasima Date: Thu, 4 Dec 2008 10:42:53 +0000 Subject: [PATCH] =?UTF-8?q?=E3=82=B3=E3=82=A2=EF=BC=91=E3=81=AE=E3=83=96?= =?UTF-8?q?=E3=83=BC=E3=83=88=E5=BE=85=E3=81=A1=E5=AF=BE=E5=BF=9C=E3=80=82?= =?UTF-8?q?=20NULL=E3=82=B8=E3=83=A3=E3=83=B3=E3=83=97=E6=99=82=E3=81=AE?= =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=82=A2=E3=83=9C=E3=83=BC=E3=83=88?= =?UTF-8?q?=E5=AF=BE=E5=BF=9C=E3=80=82=20SWI=E3=83=8F=E3=83=B3=E3=83=89?= =?UTF-8?q?=E3=83=A9=E3=82=A2=E3=83=89=E3=83=AC=E3=82=B9=E6=A0=BC=E7=B4=8D?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@78 b871894f-2f95-9b40-918c-086798483c85 --- .../bootrom/build/libraries/init/ARM11/crt0.c | 22 +++++++++++++++++-- .../bootrom/build/libraries/init/ARM9/crt0.c | 17 ++++++++------ trunk/include/ctr/hw/ARM11/mmap_axi_wram.h | 2 ++ 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/trunk/bootrom/build/libraries/init/ARM11/crt0.c b/trunk/bootrom/build/libraries/init/ARM11/crt0.c index a735555..5a02c85 100644 --- a/trunk/bootrom/build/libraries/init/ARM11/crt0.c +++ b/trunk/bootrom/build/libraries/init/ARM11/crt0.c @@ -50,8 +50,16 @@ reserve b reserve irq b STUPi_IrqVeneer fiq b STUPi_FiqVeneer + INASM_EXTERN( STUPi_SwiHandler ) + + DCD STUPi_SwiHandler + stupStartHandlerVeneer + // NULLジャンプ時のデータアボート有効時はここで発生 + mov r12, #0 + ldr r12, [r12] + //---- check CPU ID mrc p15,0, r0, c0, c0, 5 tst r0, #HW_C0_AP_CPU_ID_MASK @@ -68,15 +76,25 @@ stupStartHandlerVeneer ldr r3, =REG_IDR_CNT_ADDR mov r0, #REG_OS_IDR_CNT_E_MASK str r0, [r3] + ldr r3, =REG_IDR_CLR_PND0_ADDR + ldr r1, =REG_OS_IDR_CLR_PND0_IPI_ALL_MASK + mov r0, #~0 + str r0, [r3] LSYM(10) - wfi + ldr r0, [r3] + tst r0, r1 + wfieq nop - b BSYM(10) + beq BSYM(10) + ldr lr, =HW_START_VECTOR1_PTR + bx lr core0_start INASM_EXTERN( STUPi_StartHandler ) b STUPi_StartHandler + + LTORG } diff --git a/trunk/bootrom/build/libraries/init/ARM9/crt0.c b/trunk/bootrom/build/libraries/init/ARM9/crt0.c index e8f5f7c..229624a 100644 --- a/trunk/bootrom/build/libraries/init/ARM9/crt0.c +++ b/trunk/bootrom/build/libraries/init/ARM9/crt0.c @@ -50,16 +50,19 @@ reserve b reserve irq b STUPi_IrqVeneer fiq b STUPi_FiqVeneer + INASM_EXTERN( STUPi_SwiHandler ) + + DCD STUPi_SwiHandler + + INASM_EXTERN( |Image$$SVC_RW$$Base| ) + INASM_EXTERN( |Load$$SVC_RW$$Base| ) + + DCD |Image$$SVC_RW$$Base| + DCD |Load$$SVC_RW$$Base| + stupStartHandlerVeneer INASM_EXTERN( STUPi_StartHandler ) b STUPi_StartHandler - DCD 0 - - INASM_EXTERN( |Image$$SVC_RW$$Base| ) - INASM_EXTERN( |Load$$SVC_RW$$Base| ) - - DCD |Image$$SVC_RW$$Base| - DCD |Load$$SVC_RW$$Base| } diff --git a/trunk/include/ctr/hw/ARM11/mmap_axi_wram.h b/trunk/include/ctr/hw/ARM11/mmap_axi_wram.h index 04487a0..58da7bb 100644 --- a/trunk/include/ctr/hw/ARM11/mmap_axi_wram.h +++ b/trunk/include/ctr/hw/ARM11/mmap_axi_wram.h @@ -36,6 +36,7 @@ extern "C" { #define HW_AXI_WRAM_SYSRV_OFS_UDEF_VENEER 0x18 #define HW_AXI_WRAM_SYSRV_OFS_IABT_VENEER 0x20 #define HW_AXI_WRAM_SYSRV_OFS_DABT_VENEER 0x28 +#define HW_AXI_WRAM_SYSRV_OFS_START_VECTOR1 0x54 #define HW_AXI_WRAM_SYSRV_OFS_INTR_CHECK0 0x58 #define HW_AXI_WRAM_SYSRV_OFS_INTR_CHECK1 0x5c @@ -46,6 +47,7 @@ extern "C" { #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_PTR (HW_AXI_WRAM_SYSRV + HW_AXI_WRAM_SYSRV_OFS_START_VECTOR1) #define HW_INTR_CHECK0_PTR (HW_AXI_WRAM_SYSRV + HW_AXI_WRAM_SYSRV_OFS_INTR_CHECK0) #define HW_INTR_CHECK1_PTR (HW_AXI_WRAM_SYSRV + HW_AXI_WRAM_SYSRV_OFS_INTR_CHECK1)