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<