QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3998|回复: 2

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

[复制链接]
发表于 2007-7-16 10:19:39 | 显示全部楼层 |阅读模式
看linux2.6的代码,发现在traps_init()函数中,将中断向量表拷贝到了0xffff0000处,而ARM资料上说,系统发现中断后是自动跳到0x0地址去的,那么为什么linux不把中断向量表拷贝到0x0处,而要拷贝到0xffff0000处呢?
发表于 2007-7-19 05:29:12 | 显示全部楼层
概念错误。
中断向量表在 idt中,内核初始化以后,里面的内容还是空的(也有可能全部指向early_printk,根据你的配置不同而异),而这个traps_init()只是建立这个中断表。
所有的中断向量都在这个idt中。
回复

使用道具 举报

 楼主| 发表于 2007-8-7 18:48:21 | 显示全部楼层
没看明白,能说的详细些吗?linux系统完全运行起来之后,如果发生中断它是会跳转到0x0地址去的,那么0x0地址就必须已经存在中断向量表。那么linux系统在启动过程中是在什么时候把中断向量表拷贝到0x0地址那里去的呢?还有一个问题,linux在启动起来之后是不是一定要把SDRAM的起始地址映射为0x0地址呢?如果是,它是在什么时候映射的?
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-25 05:16 , Processed in 0.073094 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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