ARM中断流程思考。
1.SPSR是仅仅做备份CPSR使用。
当中断发生的时候,
1.将CPSR保存到SPSR里面,同时CPSR切换到中断模式。
注意,cpsr就是当前运行的,不会切换到spsr寄存器。
2.SP指向SP_IRQ;SP_USR 不需要额外保存。
3.pc保存到lr_irq. lr指向lr_irq. LR_usr不需要额外保存;
4.pc=中断向量表->中断函数。
5.当返回的时候,将SPSR弹出来。然后通过movs pc.lr【先将PC=LR_IRQ,然后将spsr->cpsr[这个就会切换模式,将sp指向]】
假设没有lr_irq.一般处理是硬件负责将lr=pc.跟call调用是一个道理。然后将lr压入栈。