municipalidad - boleta digital arm mar del plata
¿En qué modo comienza el controlador SVC? (1)
¿En qué modo comienza el controlador ARM SVC? Básicamente, quiero saber en qué modo se encuentra el núcleo ARM cuando se produce una excepción SVC.
Parece que no puede encontrarlo en ARM ARM, pero supongo que comienza en Supervisor
.
¿Estás hablando del manejador de SWI? Sí, veo algunos lugares a los que se refieren como la instrucción SWI pero a veces la instrucción SVC.
Nota: En las versiones anteriores de la arquitectura ARM, SVC se llamaba SWI, interrupción de software.
Desde ARM ARM
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
...
Excepción de interrupción de software
La instrucción de interrupción del software (SWI) ingresa al modo Supervisor para solicitar una función de supervisor (sistema operativo) en particular. Cuando se ejecuta un SWI, se realizan las siguientes acciones:
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
Para regresar después de realizar la operación SWI, use las siguientes instrucciones para restaurar la PC (desde R14_svc) y CPSR (desde SPSR_svc) y regrese a las instrucciones que siguen a SWI: MOVS PC, R14