Arm SVC处理程序以哪种模式启动?

Arm SVC处理程序以哪种模式启动?,arm,Arm,ARM SVC处理程序以哪种模式启动?基本上,我想知道在引发SVC异常时ARM核心处于哪种模式 似乎在手臂上找不到它,但我猜它是从主管开始的。你是说SWI处理器吗?是的,我看到一些地方他们称之为SWI指令,但有时是SVC指令 注意:在ARM架构的旧版本中,SVC被称为SWI,即软件中断 从手臂 Exception type Mode Address ---------------------------------------------- Reset

ARM SVC处理程序以哪种模式启动?基本上,我想知道在引发SVC异常时ARM核心处于哪种模式


似乎在手臂上找不到它,但我猜它是从
主管

开始的。你是说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

软件中断异常

软件中断指令(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操作后返回,请使用以下指令恢复PC(从R14_svc)和CPSR(从SPSR_svc)并返回到SWI后的指令: MOVS PC,R14