qnhgpsj 发表于 2007-7-16 10:19:39

linux为什么将中断向量表拷贝到了0xffff0000?

看linux2.6的代码,发现在traps_init()函数中,将中断向量表拷贝到了0xffff0000处,而ARM资料上说,系统发现中断后是自动跳到0x0地址去的,那么为什么linux不把中断向量表拷贝到0x0处,而要拷贝到0xffff0000处呢?

jarodlau 发表于 2007-7-19 05:29:12

概念错误。
中断向量表在 idt中,内核初始化以后,里面的内容还是空的(也有可能全部指向early_printk,根据你的配置不同而异),而这个traps_init()只是建立这个中断表。
所有的中断向量都在这个idt中。

qnhgpsj 发表于 2007-8-7 18:48:21

没看明白,能说的详细些吗?linux系统完全运行起来之后,如果发生中断它是会跳转到0x0地址去的,那么0x0地址就必须已经存在中断向量表。那么linux系统在启动过程中是在什么时候把中断向量表拷贝到0x0地址那里去的呢?还有一个问题,linux在启动起来之后是不是一定要把SDRAM的起始地址映射为0x0地址呢?如果是,它是在什么时候映射的?
页: [1]
查看完整版本: linux为什么将中断向量表拷贝到了0xffff0000?