From e728496b11b556fe9457969cd7a1127458011112 Mon Sep 17 00:00:00 2001 From: nakasima Date: Wed, 28 Jan 2009 08:30:54 +0000 Subject: [PATCH] =?UTF-8?q?r11,r12=E3=81=AFFIQ=E3=81=A7=E3=81=AF=E3=83=90?= =?UTF-8?q?=E3=83=B3=E3=82=AF=E3=83=AC=E3=82=B8=E3=82=B9=E3=82=BF=E3=81=AB?= =?UTF-8?q?=E3=81=AA=E3=82=8B=E3=81=9F=E3=82=81CPU=E3=83=A2=E3=83=BC?= =?UTF-8?q?=E3=83=89=E9=96=93=E3=81=AE=E5=8F=97=E3=81=91=E6=B8=A1=E3=81=97?= =?UTF-8?q?=E3=81=AFr0,r1=E3=81=B8=E5=A4=89=E6=9B=B4=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@226 b871894f-2f95-9b40-918c-086798483c85 --- .../build/libraries/init/common/crt0_excp.c | 56 ++++++++--------- .../build/libraries/os/common/os_exception.c | 63 ++++++++++--------- 2 files changed, 60 insertions(+), 59 deletions(-) diff --git a/trunk/bootrom/build/libraries/init/common/crt0_excp.c b/trunk/bootrom/build/libraries/init/common/crt0_excp.c index 72be906..d12e155 100644 --- a/trunk/bootrom/build/libraries/init/common/crt0_excp.c +++ b/trunk/bootrom/build/libraries/init/common/crt0_excp.c @@ -220,10 +220,10 @@ asm void i_stupDAbtVeneer( void ) asm void i_stupSwiSemihosting( void ) { // 割り込み禁止 - mrs r12, cpsr - orr r12, r12, #(HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE) - msr cpsr_fsxc, r12 - ldmfd sp!, {r11, r12, lr} + mrs r1, cpsr + orr r1, r1, #(HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE) + msr cpsr_fsxc, r1 + ldmfd sp!, {r0-r1, lr} add sp, sp, #12 msr cpsr_fsxc, #(HW_PSR_SVC_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE) // SVCモード @@ -255,45 +255,45 @@ asm void i_stupSwiHandler( void ) // 呼び出し元のモード sub sp, sp, #12 - stmfd sp!, {r11, r12, lr} // このタイミングでデータアボートハンドラがSWIを使用するとSVCレジスタは復帰不能 - add r12, sp, #24 // 呼び出し元のスタック内へ確保したSPSR_svc、LR_svc用スタックアドレスをコピー + stmfd sp!, {r0-r1, lr} // このタイミングでデータアボートハンドラがSWIを使用するとSVCレジスタは復帰不能 + add r1, sp, #24 // 呼び出し元のスタック内へ確保したSPSR_svc、LR_svc用スタックアドレスをコピー msr cpsr_fsxc, #(HW_PSR_SVC_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE) // SVCモード - mov sp, r12 // ※SP_svc - mov r12, lr - mrs r11, spsr - stmfd sp!, {r11, lr} // SPSR_svc、LR_svcを退避 + mov sp, r1 // ※SP_svc + mov r1, lr + mrs r0, spsr + stmfd sp!, {r0, lr} // SPSR_svc、LR_svcを退避 // 割り込み状態継承 - and r11, r11, #(HW_PSR_CPU_MODE_MASK | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE) + and r0, r0, #(HW_PSR_CPU_MODE_MASK | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE) // ユーザモードならシステムモードへ - tst r11, #HW_PSR_SYS_MODE ^ HW_PSR_USR_MODE - orreq r11, r11, #HW_PSR_SYS_MODE - msr cpsr_fsxc, r11 + tst r0, #HW_PSR_SYS_MODE ^ HW_PSR_USR_MODE + orreq r0, r0, #HW_PSR_SYS_MODE + msr cpsr_fsxc, r0 // 呼び出し元のモード - ldrh r11, [r12, #-2] // システムコールNo取得 - mov r11, r11, lsl #1 - and r11, r11, #SVC_ID_PREMASK<