Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14263
  • 博文数量: 5
  • 博客积分: 265
  • 博客等级: 二等列兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-14 20:10
文章分类
文章存档

2009年(3)

2008年(2)

我的朋友
最近访客

分类:

2009-11-01 12:05:35

目前是在mips体系下。
设备驱动上,对disable_irq和local_irq_disable的解释模棱两可,点到为止而已:

LDD 中文第三版 P273

禁用单个中断:
“调用disable_irq(int irq),将会使中断控制器PIC中,指定中断的掩码被设置,于是所有的处理器都禁用该IRQ”
那么该句的潜在意思就是,一旦PIC把该屏蔽位恢复,CPU会重新检测到该中断,也就是说,通过disable_irq屏蔽的中断,并没有丢失,而只是暂时不发送到CPU去
[color=Blue]总体的讲,disable_irq(int irq),在mips上的实现,实际就是desc->chip->disable(irq); [/color]

禁用所有的中断:
“local_irq_disable() , 关闭当前处理器上的中断发送”
这句的意思就是,将CPU的标志寄存器中的使能中断位关闭。那么该中断便不可挽回的丢失了。
local_irq_disable做的事,就是先把状态寄存器最后5位置0(最后一位是CPU中断屏蔽位)
然后,mfc0  , $2, 1 或者 mfc0 , $12
阅读(1008) | 评论(0) | 转发(0) |
0

上一篇:中断概述

下一篇:没有了

给主人留下些什么吧!~~