arm v8 基础
有四个exception level:
EL0 normal用户应用程序
EL1 操作系统内核
EL2 Hypervisor(vm)
EL3 底层固件,包括secure monitor
EL之间移动的规则:
移动到更高级的EL,比如从EL0/EL1,说明增加了软件的执行权限
异常不能导致进入更低的EL
EL0没有异常处理,异常必须在更高层的EL中处理
一个异常会导致程序流程上的改变,一个异常处理的执行在比EL0更高的exception level上,由定义的异常vector决定,异常包括:
中断(IRQ/FIQ)
内存系统异常
未定义指令
系统调用
secure monitor或者hypervisor traps
异常处理结束,通过ERET返回到之前的EL
从一个异常处理中返回,能否处在相同的EL或者进入一个较低的EL,不能进入更高的EL
除了从EL3到Non-secure状态,伴随EL的改变,security状态会改变
AArch64和AArch32之间的切换:
32bit的OS,不能run 64bit的应用程序
两者EL相似,但有不同,处理器的执行状态会被EL所限制
64->32,要求有更高的EL,由ERET返回异常处理导致
32->64,要求EL从低到高,由指令执行或外部信号的异常导致
异常处理和异常返回在相同EL是,execution state不能改变
在aarch32环境下,arm-v8的处理方式和arm-v7相同,在aarch64的环境下,将使用exception handing model
arm-v8 寄存器
一般目的寄存器 X0-X30(W0-W30)
除EL0外,其他EL可以使用SP_ELn或者使用SP_EL0
Removing direct access to the PC in ARMv8 makes return prediction easier and simplifies the ABI specification.
aarch64没有协处理器,相应操作在其system registers中
aarch32呵aarch64的工作寄存器mapping:
CPSR:
aarch32 CPSR:
aarch64 CPSR:
阅读(2201) | 评论(0) | 转发(0) |