2
ARM SVCハンドラはどのモードで起動しますか?基本的に、私はSVC例外が発生したときにARMコアがどのモードにあるのか知りたいですか?SVCハンドラはどのモードで起動しますか?
ARM ARMでは見つからないようですが、Supervisor
で始まると思われます。
ARM SVCハンドラはどのモードで起動しますか?基本的に、私はSVC例外が発生したときにARMコアがどのモードにあるのか知りたいですか?SVCハンドラはどのモードで起動しますか?
ARM ARMでは見つからないようですが、Supervisor
で始まると思われます。
あなたはSWIハンドラについてお話ししていますか?はい、SWI命令として参照する場所がありますが、時にはSVC命令と呼ばれる場所もあります。
注:旧バージョンのARMアーキテクチャでは、SVCはSWI、ソフトウェア割り込みと呼ばれていました。
Exception type Mode Address
----------------------------------------------
Reset Supervisor 0x00000000
Undefined Instruction Undefined 0x00000004
Software Interrupt (SWI) Supervisor 0x00000008
Prefetch Abort Abort 0x0000000C
Data Abort Abort 0x00000010
IRQ IRQ 0x00000018
FIQ FIQ 0x0000001C
ARMのARMから...
ソフトウェア割り込み例外
ソフトウェア割り込み命令(SWI)は、特定のスーパーバイザー(オペレーティングシステム)機能を要求するために、スーパーバイザモードに入ります。 SWIが実行されると、次のアクションが実行されます
R14_svc = address of next instruction after the SWI instruction
SPSR_svc = CPSR
CPSR[4:0] = 0b10011 /* Enter Supervisor mode */
CPSR[5] = 0 /* Execute in ARM state */
/* CPSR[6] is unchanged */
CPSR[7]= 1 /* Disable normal interrupts */
/* CPSR[8] is unchanged */
CPSR[9] = CP15_reg1_EEbit /* Endianness on exception entry */
PC = 0x00000008
は、SWIの操作を実行した後に返す(R14_svcから)PCを復元するには、以下の命令を使用し、(SPSR_svcから)CPSRおよび命令に戻るにはSWIに続いて: MOVS PC、R14