__asm__ palabra clave asm es GCC definiciones de macro
utilizados para declarar una expresiones Inline Assembler
__volatile__ GCC es la volatilidad macro definición de palabra clave
# define volátil volátil
declaración a la GCC no permite la optimización del ensamblador en línea, o cuando se utiliza una opción de optimización (= O) compilado, GCC se basa en su propio juicio para decidir si la línea ensamblador instrucciones expresión optimizar la distancia.
formato de ensamblador en línea con la expresión de C / C ++ es:
asm volátiles ( “Lista de instrucciones”: Salida: Entrada: Clobber / Modificar);
Cuando una pluralidad de instrucciones en la "Lista de instrucciones" cuando
se puede enumerar un par de comillas en todas las instrucciones,
sino también una o varias instrucciones pueden ser colocados en un par de comillas, más que todos los pedidos realizados entre comillas. Para separar de ellos o de nueva línea (/ n); debe ser un punto y coma ().
En la arquitectura ARM la operación de desactivación de interrupción
Tres instrucciones / n independiente.
Sólo dos registros de salida, no de entrada
memoria de cambio
int disable_interrupts (void)
{
unsigned long old,temp;
__asm__ __volatile__("mrs %0, cpsr/n"
"orr %1, %0, #0x80/n"
"msr cpsr_c, %1"
: "=r" (old), "=r" (temp)
:
: "memory");
return (old & 0x80) == 0;
}
Ref
comando de consulta
https://blog.csdn.net/qq_35608277/article/details/105123483
la CPSR consulta
https://blog.csdn.net/qq_35608277/article/details/105107353
Ref
otra
https://blog.csdn.net/geekcome/article/details/6216436