ARM系列有7个基本工作模式,Cortex-A系列有8种基本模式
uer(用户模式):非特权模式,大部分任务执行在这种模式
linux下的用户空间,用户模式是用户程序的工作模式,它运行在操作系统的用户态,它没有权限去操作其它硬件资源,只能执行处理自己的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能通过软中断或产生异常。
System(系统模式): 使用和User模式相同寄存器集的特权模式
系统模式是特权模式,不受用户模式的限制。用户模式和系统模式共用一套寄存器,操作系统在该模式下可以方便的访问用户模式的寄存器,而操作系统的一些特权任务可以使用这个模式访问一些受控的资源。
Abort(中止模式): 当存取异常时将会进入这种模式
中止模式用于支持虚拟内存或存储器保护,当用户程序访问非法地址,没有权限读取的内存地址时,会进入该模式,linux 下编程时经常出现的segment fault通常都是在该模式下抛出返回的。
Undef(未定义模式): 当执行未定义指令时会进入这种模式
未定义模式用于支持硬件协处理器的软件仿真,CPU在指令的译码阶段不能识别该指令操作时,会进入未定义模式。
FIQ(快速中断模式): 当一个高优先级(fast) 中断产生时将会进入这种模
快速中断模式是相对一般中断模式而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中。