ARM工作模式
用户模式(USR)
用户模式是用户程序的工作模式,它运行在操作系统的用户态,它没有权限操作其他硬件资源,只能执行处理自己的数据,也不能切换到其他模式下,要想访问硬件资源或切换到其他模式只能通过软中断或产生异常。
系统模式(SYS)
系统模式是特权模式,不受用户模式的限制。用户模式和系统模式共用一套寄存器,操作系统在该模式下可以方便的访问用户模式的寄存器,而操作系统的一些特权任务可以使可以使用这个模式访问一些受控的资源。
用户模式和系统模式两者使用相同的寄存器,都没有已保存程序状态寄存器(SPSR),但系统模式比用户模式有更高的权限,可以访问所有系统资源。
一般中断模式(IRQ)
一般中断模式也叫普通中断模式,用于处理一般的中断请求,通常在硬件产生中断中断信号之后自动进入该模式,该模式为特权模式,可以自由访问系统的硬件资源。
快速中断模式(FIQ)
快速中断模式是相对一般中断模式而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中。快中断有许多(R8-R14)自己专用的寄存器,发生中断时,使用自己的寄存器就避免了保存和恢复某些寄存器。如果异常中断处理程序中使用它自己的物理寄存器之外的其他寄存器,异常中断处理程序必须保存和恢复这些寄存器。
管理模式(SVC)
管理模式是CPU上电后默认模式,因此,在该模式下主要用来做系统的初始化,软中断处理也在该模式下。当用户模式下的用户程序请求使用硬件资源时,通过软件中断进入该模式。
终止模式(ABT)
中止模式用于支持虚拟内存或存储器保护,当用户程序访问非法地址,没有权限读取的内存地址时,会进入该模式,linux下编程时经常出现的segment fault通常都是在该模式下抛出返回的。
未定义模式(UND)
未定义模式用于支持硬件协处理器的软件仿真,CPU在指令的译码阶段不能识别该指令操作时,会进入未定义模式。