免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2277 | 回复: 1
打印 上一主题 下一主题

关于ARM中断处理中的寄存器预留问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-30 14:53 |只看该作者 |倒序浏览
内核版本2.6.28

在arch/arm/kernel/entry-armv.S文件中中断处理中的irq_handler宏中:
  1. /*
  2. * Interrupt handling.  Preserves r7, r8, r9
  3. */
  4.         .macro  irq_handler
  5.         get_irqnr_preamble r5, lr
  6. 1:      get_irqnr_and_base r0, r6, r5, lr
  7.         movne   r1, sp
  8.         @
  9.         @ routine called with r0 = irq number, r1 = struct pt_regs *
  10.         @
  11.         adrne   lr, 1b
  12.         bne     asm_do_IRQ
复制代码
在注释中说明对irq_handler的调用需要预留r7-r9寄存器,因为它们用来做内核抢占用,那么编译如何做到在asm_do_IRQ
处理中不使用这三个寄存器的呢? 请分析过ARM中断处理流程的高手不吝赐教!

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
2 [报告]
发表于 2011-12-02 14:09 |只看该作者
ARM中,被调用者用到那个寄存器,就会入栈那个寄存器;在返回到调用者之前恢复这些寄存器。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP