打印

瞧瞧这个纯软件仿真中断的方法

[复制链接]
1164|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xieqin|  楼主 | 2007-11-19 10:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前两天一个朋友问如何纯软件仿真中断.以前我也遇到过这样的问题,不过都没有解决,只是绕过去了.于是写了一个模似硬件中断的函数来试试,
测试证明是可行的.在此跟大家分享,并期望得到大家更好的方法.
    EXPORT CALL_IRQ
CALL_IRQ      proc
    STMFD    sp!,{r0,r1,lr}
    MRS      r0, cpsr
    LDR    r1, =call_irq_ret
    ADD    r1, r1, #0x04
    
    MSR    cpsr_c, #0x12
    
    MSR    spsr_cxsf, r0
    MOV    lr, r1
    
    MOV    r0, #0x18
    BX    r0
call_irq_ret
    LDMFD    sp!,{r0,r1,lr}
    BX    lr
    ENDP
在程序中,先置位某个中断,再显式调用CALL_IRQ()即可.

相关帖子

沙发
阿南| | 2007-11-19 22:00 | 只看该作者

不错,不错,支持,顶!

使用特权

评论回复
板凳
xieqin|  楼主 | 2007-11-19 22:38 | 只看该作者

我自己顶顶.呵呵

没什么深的技术含量. 最基础的东东最简单的实现.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

140

帖子

0

粉丝