2012-01-28 5 views

答えて

2

あなたは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

関連する問題