LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1040|回复: 1

请教MMU使能下,中断发生时CP15 C13的PID是否自动变为0

[复制链接]
发表于 2005-6-9 16:37:42 | 显示全部楼层 |阅读模式
看到资料说:
ARM-Core看到的地址(VA)是0-32M,CP15 C13的PID构成虚拟地址的高7位:
MVA=VA+(PID<<25)
MVA出现在cashe、主存上。

假设现在运行的是PID=1的进程,中断发生了,CPU跳到0x0开始的中断向量去执行。这个0x0是指MVA吧?那么PID是否自动变为0呢?中断返回后,是自动恢复PID还是自己来?

请指教
 楼主| 发表于 2005-6-10 12:11:19 | 显示全部楼层
我查看了不少资料,都没发现有PID会自动变化的说法,以下是我的想法:
ARM中VA和MVA的关系如下(CPU核使用VA,MMU、主存等使用MVA):
if(VA[31:25] == 0b0000000) then //VA < 32 M
MVA = VA | (PID <<25)
else
MVA = VA //VA >=32M
所以MMU启动后,中断发生时,
1、如果中断向量放在0x00000000处,则对于不同的进程(PID),中断向量的MVA将不同
2、如果中断向量放在0xffff0000处,则对于不同的进程(PID),中断向量的MVA也相同
显然,如果使用1,则带来的麻烦非常大——对于每个进程,都得设置自己的中断向量。所以MMU使能后,处理中断的方法应该是2。仔细看了看linux2.6的代码,发现s3c2410的中断向量确实设置在0xffff0000处。

下午再做做实验,呵呵,自己摸索就是慢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表