当前位置:  技术问答>linux和unix

哪位帮忙把这个汇编宏,解析一下?

    来源: 互联网  发布时间:2016-10-24

    本文导语:  下面这个是Linux获取中断号的宏定义,一时还找不到这个汇编的语法,哪位帮忙把下面的句子解析一下呢 #define AVIC_NIMASK 0x04 @ this macro disables fast irq (not implemented) .macro disable_fiq .endm .macro  get_irqnr_preamble, ba...

下面这个是Linux获取中断号的宏定义,一时还找不到这个汇编的语法,哪位帮忙把下面的句子解析一下呢

#define AVIC_NIMASK 0x04

@ this macro disables fast irq (not implemented)
.macro disable_fiq
.endm

.macro  get_irqnr_preamble, base, tmp

ldr base, =avic_base
ldr base, [base]

ldr r4, [base, #AVIC_NIMASK]
.endm

.macro  arch_ret_to_user, tmp1, tmp2
.endm

.macro get_irqnr_and_base, irqnr, irqstat, base, tmp

@ Load offset & priority of the highest priority
@ interrupt pending from AVIC_NIVECSR
ldr irqstat, [base, #0x40]
@ Shift to get the decoded IRQ number, using ASR so
@ 'no interrupt pending' becomes 0xffffffff
mov irqnr, irqstat, asr #16
@ set zero flag if IRQ + 1 == 0
adds tmp, irqnr, #1

bicne tmp, irqstat, #0xFFFFFFE0
strne tmp, [base, #AVIC_NIMASK]
streq r4, [base, #AVIC_NIMASK]

.endm

@ irq priority table (not used)
.macro irq_prio_table
.endm

|
很简单啊,根据宏的名字就能判断出个大概,获得irq号,并且是可抢占的
base,tmp是参数
.macro get_irqnr_preamble, base, tmp

ldr base, =avic_base
ldr base, [base]

ldr r4, [base, #AVIC_NIMASK]
.endm

|

看你的中断号4294950914=0xFFFC0002, 应该是该中断应该跳转去的向量地址,不是中断号吧?是说发生这个中断你应该执行0xFFFC0002的代码吧?看看你的数据手册的VIC的部分应该就明了了。
中断号获取一般使用get_irqnr_and_base。 不好意思,用的一直是三星和我们公司的没有VIC的芯片,如果说对了记得把分给我喔!!呵呵

|
看你的中断号4294950914=0xFFFC0002, 应该是该中断应该跳转去的向量地址,不是中断号吧?是说发生这个中断你应该执行0xFFFC0002的代码吧?看看你的数据手册的VIC的部分应该就明了了。
中断号获取一般使用get_irqnr_and_base。 不好意思,用的一直是三星和我们公司的没有VIC的芯片,如果说对了记得把分给我喔!!呵呵

|
Linux中的ASM是AT&T ASM.

|

赞同。ARM-Linux基本的指令还是ARM汇编,如果能够看懂ARM汇编,看Linux这些AT&T的汇编并不难.总之还是要学习ARM 基础知识的问题。

|
楼主这个问题是比较奇怪,刚才看了看i.MX27的文档,按理说在
mov irqnr, irqstat, asr #16
这步就已经可以将中断号从NIVECSR寄存器中读出并右移16位就可以得到中断号。现在移位的结果是0xffffc002.这个寄存器是只读的,最高位默认是0,ASR不可能移位出0xFFFF.楼主你确认你读的地址是正确的吗?

|
当然这个0xFFFC0002可能是你设置的,或者系统上电的默认值,在我的印象中VIC是需要设置的

|



   问下,要看懂这些代码?  需要学习哪些知识? 我对这些代码太好奇了,可惜学习无门.

    
 
 

您可能感兴趣的文章:

  • c内嵌汇编问题,超级初级,大家帮忙
  • 帮忙解释下这几句汇编代码,各位大虾
  • Linux汇编代码...各位帮帮忙
  • 关于汇编跳转到elf文件问题,忙了一个下午都弄不好,大家帮帮忙啊
  • 请问各位:我用SUN公司的JAXP开发包解析XML文档,可不知道对XML解析后如何将结果写回文件中。请各位熟悉Java和XML的高手帮忙。
  • 请帮忙解析tomcat错误
  • 帮忙解析一下这个正则表达式
  • 关于域名或DNS或解析的问题,请帮帮忙
  • 帮忙用awk解析一下以下字符串的表达式 多谢 急~
  • 牛人来帮忙解析一个shell脚本(用于统计一个进程的内存使用情况)
  • 帮忙解析下这段日志,awk或者sed。
  • Linux内存线性地址空间布局解析---的一些疑惑,大家帮忙解释解释
  • bind反向解析问题,已经弄了我很久了,一直找不到问题,请高手帮帮忙呀
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 努力努力再努力,帮忙帮忙来帮忙!
  • 在servlet中有一个关于单引号输出的问题,请大家帮忙,帮忙,帮帮忙!!
  • 小问题,你一定能够帮忙!——菜鸟请求帮忙!!
  • 帮忙帮忙如何设置变量pathclass
  • 没人帮忙吗?我想用JAVA编一个像WINDOW中的画图软件,现在出现了如下问题,请各位老哥老姐帮帮忙
  • 帮帮忙!SCO OpenServer 5.0.5 的root用户口令丢了,怎么找回来啊,帮帮忙!!!!!!
  • 我用smartupload组件遇到问题了,请帮忙!!
  • webmail问题,请高手帮忙!!!谁会使用IMP 3.0????!!!
  • 脚本问题,帮忙
  • 高手帮忙解释
  • 求教求教,shell问题...各位大哥,帮忙下
  • 关于程序移植,请知道的帮忙,分会加的
  • DELL服务器,安装RedHat EAS3.0,装完了,连不上SSH。。。。。哪位大虾帮忙!!急啊 !!!!
  • 关于聊天室的若干疑问!!!请各位大虾帮忙!
  • 数据库 iis7站长之家
  • 请求各位帮忙,关于绘制图像
  • 关于全选的问题大家帮忙看看~
  • 帮忙找个工作。
  • 请帮忙推荐几个下载java电子书的网站,35分献上!
  • 我怎么不能编译servlet?请帮忙!!!谢谢!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3