(toppers-users 2279) Re: ARM対応の割り込みとスタックの復帰について

Masafumi YASHIKI yashiki.masafumi @ sharp.co.jp
2006年 2月 1日 (水) 13:02:20 JST


名古屋大学 本田様

屋鋪@シャープです.

早速の対応,ありがとうございます.

>ret_int_2:
>   ldmfd sp!, {r0}       /* spsr を復帰 */
>   mrs   r2, cpsr        /* FIQを継承            */
>   and   r2, r2, #CPSR_FIQ_BIT
>   and   r0, r0, #~CPSR_FIQ_BIT
>   orr   r0, r0, r2
>   msr   spsr, r0                 /* 戻り先のcpsrをspsrに設定 */
>   ldmfd sp!, {r0 - r3,ip,lr,pc}^ /* タスクへ戻る ^付きなので、psr <- spsr*/
>
>return_to_task_irq:
>  ldmfd   sp!,{r1}           /* CPSRの復帰処理 */
>  mrs     r2, cpsr           /* FIQを継承            */
>  and     r2, r2, #CPSR_FIQ_BIT
>  and     r1, r1, #~CPSR_FIQ_BIT
>  orr     r1, r1, r2
>  msr     spsr, r1              /* 戻り先のcpsrをspsrに設定 */
>  ldmfd   sp!,{r0-r3,ip,lr,pc}^ /* タスクに復帰 ^付きなので、cpsr <- spsr */

修正方法は,こちらでのローカルハックと同じ内容なので問題ないと思われま
す.発生していた不具合が解消されることを確認いたしました.

次回のリリースへの反映をよろしくお願いいたします.