标题:
中断用户态进程时堆栈如何切换
[打印本页]
作者:
cuicaifeng
时间:
2013-7-5 14:55
标题:
中断用户态进程时堆栈如何切换
大家好:
当程序运行在用户空间中时候。使用的是用户堆栈。到了系统内部使用的是系统堆栈。这个理解最为直观的就是:同样是运行,但是
SP
指针所指向的地址不一样了。
假设用户程序运行时
sp
指针的数值是
0x8000 0000
,那么这个时候中断到来。用户程序被中断,从而进入系统空间中,这个时候
sp
指针的地址是否还是
0x8000 0000
?
我看了一下代码
armv-entry.S
中
vector_stub
没有对
sp
进行过切换之类的操作。那么就是说
arm
的
cpu
中中断用户程序,使用的堆栈还是用户空间的指针是这样吗?
看了
arm cpu
的体系架构介绍
中断进入
svc
模式中有自己的
sp
指针
叫做
r13_SVC
。这个模式下的
sp
指针是怎么告诉硬件的
又是什么时候初始化的?
SVC
模式下使用
SP
,指的就是
sp_svc
,已经不是
usr
模式下的
sp
了
那么这个
svc
下的
sp
指向哪里,又是在哪里初始化的?
希望高手回答一下。
作者:
baikeeditor
时间:
2013-8-1 14:53
不用模式虽然名称一样,但物理位置实际上是不一样的。中断用的事中断自己的堆栈,不会用到用户模式的。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0