一、S3C2440中断体系结构
1.1 ARM体系CPU的7中工作模式
ARM体系的CPU以下7种工作模式
1、用户模式:ARM处理器正常的程序执行状态
2、快速中断模式:用于高速数据传输或通道处理
3、中断模式:用于通用的中断处理
4、管理模式:操作系统使用的保护模式
5、数据访问终止模式:当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护
6、系统模式:运行具有特权的操作系统任务
7、未定义指令种植模式:党委定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真
可以通过软件来进行模式切换,或者发生各类中断,异常时CPU自动进入相应的模式。处用户模式外,其他6种工作都属于特权模式,大多数程序运行于用户模式,进入特权模式为了处理中断,异常或者访问被保护的系统资源。
r0~r15可以直接访问,这些寄存器中除r15外都是通用寄存器,即他们既可以用于保存数据也可以用于保存地址。另外,r13~r15稍有特殊。r13又被称为栈指针寄存器,通常被用于保存栈指针。r14又被称为程序链接寄存器或连接寄存器。当执行BL子程序调用指令时,r14中得到r15的备份。而当发生中断或异常时,对应的r14_svc,r14_irq,r14_abt或r14_und中保存r15的返回值。r15是程序计数器。
每种工作模式除r0~r15共有16个寄存器外,还有第17个寄存器CPSR,即“当前程序状态寄存器”,CPSR中一些被用于标识各种状态,一些位被用于标志当前处于什么工作模式。
当一个异常发生时,将切换进入想用的工作模式,这是ARM920T CPU和将自动完成如下事情:
1、在一场工作模式的链接寄存器r14中保存前一个工作模式的吓一跳,即将执行的指令的地址。对于ARM状态,这个值是当前PC值加4或加8.
2、将CPSR的值复制到异常模式的SPSR。
3、将CPSR的工作模式位设为这个异常对应的工作模式。
4、令PC值等于这个异常模式向量表中的地址,即跳转去执行异常向量表中的相应指令。
相反的,从异常工作模式退出回到之前的工作模式时,需要通过软件完成如下事情。
1、前面进入异常工作模式时,连接寄存器中保存了前一工作模式的一个指令地址,将它减去一个适当的值后赋给PC寄存器。
2、将SPSR的值复制回CPSR