start.S详解学习(三):关闭中断

简介: start.S详解学习(三):关闭中断

关闭中断

/*
* mask all IRQs by setting all bits in the INTMR - default
*/
mov r1, #0xffffffff
ldr r0, =INTMSK
str r1, [r0]

上面这几行代码,和前面的很类似,作用很简单,就是将INTMSK寄存器设置为0xffffffff,即,将所有的中断都mask了。

关于每一位的定义,其实可以不看的,反正此处都已mask了,不过还是贴出来,以备后用:

此处,关于mask这个词,解释一下。

mask这个单词,是面具的意思,而中断被mask了,就是中断被掩盖了,即虽然硬件上中断发生了**,但是此处被屏蔽了,所以从效果上来说,就相当于中断被禁止了,硬件上即使发生了中断,CPU也不会去执行对应中断服务程序ISR了。**

此处CPU是是S3C2440,所以用到0x7fff这段代码。

其意思也很容易看懂,就是将INTSUBMSK寄存器的值设置为0x7fff。

先贴出对应每一位的含义:

此处,关于CLKDIVN的具体含义,参见下表:

bl指令

b指令,是单纯的跳转指令,即CPU直接跳转到某地址继续执行。

而BL是Branch with Link,带分支的跳转,而Link指的是Link Register,链接寄存器R14,即lr,所以,bl的含义是,除了包含b指令的单纯的跳转功能,在跳转之前,还把r15寄存器=PC=cpu地址,赋值给r14=lr,然后跳转到对应位置,等要做的事情执行完毕之后,再用

mov pc, lr

使得cpu再跳转回来,所以整个逻辑就是调用子程序的意思。

bl的语法为:

BL指令的格式为

(记得最后要有一行,mov pc, lr)

目录
相关文章
|
7月前
|
编译器
start.S详解学习(二):关闭看门狗
start.S详解学习(二):关闭看门狗
85 0
|
7月前
start.S详解学习(六):异常中断处理
start.S详解学习(六):异常中断处理
78 0
|
4月前
|
Windows
Acunetix——本地计算机上的Acunetix服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止
Acunetix——本地计算机上的Acunetix服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止
201 0
|
7月前
|
存储 索引
webserver--基于小根堆实现定时器,关闭超时的非活跃连接
webserver--基于小根堆实现定时器,关闭超时的非活跃连接
|
7月前
|
Shell Linux Windows
从您描述的情况来看,您在执行`exit`命令后,程序立即终止了
【2月更文挑战第32天】从您描述的情况来看,您在执行`exit`命令后,程序立即终止了
45 1
|
7月前
|
Windows
如何在关闭socket连接的时候跳过TIME_WAIT的等待状态
如何在关闭socket连接的时候跳过TIME_WAIT的等待状态
|
7月前
|
C语言
start.S详解学习(一):设置 CPU 模式
start.S详解学习(一):设置 CPU 模式
95 0
|
安全 Java API
为什么启动线程不直接调用run(),而要调用start(),如果调用两次start()方法会有什么后果
1位工作6年的小伙伴去某里P6一面,被问到这样一道面试题,说,为什么启动一个线程不直接调用run()方法,而要调用start()方法来启动,如果调用两次start()会有什么后果?
119 0
|
开发工具
编写start、stop、status三个脚本程序,用来启动、停止各种系统服务。
编写start、stop、status三个脚本程序,用来启动、停止各种系统服务。
234 0
|
监控 安全 Java
关闭线程的正确方法:“优雅”的中断
前文从任务到线程:Java结构化并发应用程序中介绍了如何安排任务启动线程。 线程在启动之后,正常的情况下会运行到任务完成,但是有的情况下会需要提前结束任务,如用户取消操作等。
1407 0