关于ARM架构下Linux中断的问题
时间:2011-01-23
来源:互联网
大家好:
前一段时间看了一点Qualcomm MSM平台下中断处理的代码,发现有些基础知识方面的问题非常迷惑,希望各位不吝赐教,先谢谢了~
问题是:
(1). 在MSM平台下(ARM),是否支持中断嵌套?
(2). 如果支持,那么就需要捋清楚整个中断流程
2.1 当IRQ中断来的时候,CPU会自动将CPSR的I位置位,从而禁止新的IRQ中断
2.2 PC会自动设置到0xFFFF0018处
2.3 随后,跳转到vector_irq处执行,此时,处理器处于IRQ模式,vector_irq的代码做了这些操作:修正返回地址(lr),依次将ro,lr,spsr压入栈中(此时的栈应该是IRQ模式下的栈),设置spsr为SVC模式,根据lr计算正确的跳转表项,最后通过更新PC来跳转到相应的跳转表项中(比如,来中断之前处于usr模式,那么就应该跳转到__irq_usr来执行)
2.4 到了__irq_usr中,首先调用usr_entry,把一堆从r0-r15还有一些usr模式下的寄存器压入SVC模式下的栈,然后调用get_thread_info,根据sp找到thread_info,将preempt_count加1,防止内核抢占,再接下来,调用irq_handler来获取中断号,并触发调用asm_do_IRQ(它将调用注册中断时作为参数传进来的中断服务程序),最后,恢复tsk,给why赋值,掉用ret_to_user返回usr模式,结束
以上(2)中的步奏是基于MSM7627平台下,内核版本2.6.32的.问题关健在于整个流程不知道在何处重新将2.1中由CPU自动置位的I位给清掉的?如果没有清掉,显然是无法实现中断嵌套的,并且也不可能没有清掉,否则返回usr模式后岂不是无发接收中断了?可我找来找去,还是没有找到清掉I位的操作.
不知道哪位高人能够指点一二,在此谢谢各位~
前一段时间看了一点Qualcomm MSM平台下中断处理的代码,发现有些基础知识方面的问题非常迷惑,希望各位不吝赐教,先谢谢了~
问题是:
(1). 在MSM平台下(ARM),是否支持中断嵌套?
(2). 如果支持,那么就需要捋清楚整个中断流程
2.1 当IRQ中断来的时候,CPU会自动将CPSR的I位置位,从而禁止新的IRQ中断
2.2 PC会自动设置到0xFFFF0018处
2.3 随后,跳转到vector_irq处执行,此时,处理器处于IRQ模式,vector_irq的代码做了这些操作:修正返回地址(lr),依次将ro,lr,spsr压入栈中(此时的栈应该是IRQ模式下的栈),设置spsr为SVC模式,根据lr计算正确的跳转表项,最后通过更新PC来跳转到相应的跳转表项中(比如,来中断之前处于usr模式,那么就应该跳转到__irq_usr来执行)
2.4 到了__irq_usr中,首先调用usr_entry,把一堆从r0-r15还有一些usr模式下的寄存器压入SVC模式下的栈,然后调用get_thread_info,根据sp找到thread_info,将preempt_count加1,防止内核抢占,再接下来,调用irq_handler来获取中断号,并触发调用asm_do_IRQ(它将调用注册中断时作为参数传进来的中断服务程序),最后,恢复tsk,给why赋值,掉用ret_to_user返回usr模式,结束
以上(2)中的步奏是基于MSM7627平台下,内核版本2.6.32的.问题关健在于整个流程不知道在何处重新将2.1中由CPU自动置位的I位给清掉的?如果没有清掉,显然是无法实现中断嵌套的,并且也不可能没有清掉,否则返回usr模式后岂不是无发接收中断了?可我找来找去,还是没有找到清掉I位的操作.
不知道哪位高人能够指点一二,在此谢谢各位~
作者: fiddle 发布时间: 2011-01-23
kernel\irq\handle.c handle_IRQ_event
local_irq_enable_in_hardirq();
local_irq_enable_in_hardirq();
作者: smalloc 发布时间: 2011-01-24
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28