Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4431433
  • 博文数量: 252
  • 博客积分: 5347
  • 博客等级: 大校
  • 技术积分: 13838
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-30 10:13
文章分类
文章存档

2022年(12)

2017年(11)

2016年(7)

2015年(14)

2014年(20)

2012年(9)

2011年(20)

2010年(153)

2009年(6)

分类: LINUX

2012-11-02 16:27:09

下面是转载网上的一篇文章,主要目的是查看注释。

点击(此处)折叠或打开

  1. SWI_Exception:
  2. STMFD SP!, {R2-R3,LR} //把R2,R3,LR值入栈
  3. #0号软中断的处理程序
  4. CMP R0, #0 //将R0和0比较
  5. //以下4行带EQ条件的代码均为当R0为0时应该执行的语句
  6. MRSEQ R2, SPSR //把SPSR读入到R2中
  7. STREQ R2, [R1] /把R2的值存入到[R1]中
  8. ORREQ R2, R2, #0x80 //把R2的Bit7位置1
  9. MSREQ SPSR_c, R2 //把R2的值写入到SPSR_c中,即禁止IRQ
  10. #1号软中断的处理程序
  11. CMP R0, #1 //比较R0值和1
  12. LDREQ R2, [R1] //相等则把[R1]中的数据存入R2中
  13. MSREQ SPSR_c, R2 //相等把R2的值写入到SPSR_c中,恢复IRQ
  14. #11号软中断的处理程序
  15. CMP R0, #11 //比较R0的值和11
  16. MRSEQ R2, SPSR //相等则把SPSR的值转存入到R2中
  17. BICEQ R2, R2, #0x1F //相等则把R2的Bit0~Bit4全部清零
  18. ORREQ R2, R2, #Mode_SYS //相等则把R2与#Mode_SYS相与再存入R2
  19. MSREQ SPSR_c, R2 //相等则把R2的值存入SPSR_c中,即进入系统模式
  20. #12号软中断的处理程序
  21. CMP R0, #12 //比较R0的值和12
  22. MRSEQ R2, SPSR //相等则把SPSR的值存入R2
  23. BICEQ R2, R2, #0x1F //相等则把R2的Bit0~Bit4清零
  24. ORREQ R2, R2, #Mode_USR //相等则把R2与#Mode_USR相与再存入R2中
  25. MSREQ SPSR_c, R2 //相等则把R2存入SPSR_c,即进入用户模式
  26. LDMFD SP!, {R2-R3,PC} //恢复R2、R3、PC值,返回
  27. .END //汇编代码段结束

阅读(7251) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~