|
楼主 |
发表于 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处。
下午再做做实验,呵呵,自己摸索就是慢 |
|