- 论坛徽章:
- 0
|
20可用积分
本帖最后由 eclipse_2 于 2010-04-17 16:52 编辑
- struct idt
- 25 {
- 26 unsigned short offset_low;
- 27 unsigned short sel;
- 28 unsigned char none,flags;
- 29 unsigned short offset_high;
- 30 }__attribute__ ((packed));
- asm (
- 82 "sidt %0"
- 83 :"=m"(idtr)
- 84 );
- 85 gdb_printk("idt base 0x%x\t limit 0x%x\n",*(unsigned int *)(idtr+2),*(unsigned short *)idtr);
- 86
- 87 idt = (struct idt *)(*(unsigned int *)&idtr[2] + 8 * 0x80);
- 88 gdb_printk("idt offset1 is 0x%x\n",idt->offset_low);
复制代码 gdb_printk是我自己定义的一个烘 跟printk差不多 只是加了一个调试信息而已
84行 可以输出idt的基地址和长度 为: base 0xffbf5080 limit 0x7ff 不知道是不是对的
87行 我取得80号中断的中断描述项
88行 我想看看这个描述符是不是对的 然后就crash了 应该是变量idt有问题吧
请高手指点一下 |
-
s.jpg
(843.8 KB, 下载次数: 64)
最佳答案
查看完整内容
链接:http://blog.chinaunix.net/u/33048/showart_2074303.html
|