设置SVC模式

清0:bic

置1:orr

访问cpsr和spdr要用到mrs和msr指令

mrs是把状态寄存器的值赋给通用寄存器

msr是把通用寄存器的值赋给状态寄存器

 1 .text
 2 .global _start
 3 _start:
 4     b reset
 5     ldr pc, _undefined_instruction
 6     ldr pc, _software_interrupt
 7     ldr pc, _prefetch_abort
 8     ldr pc, _data_abort
 9     ldr pc, _not_used
10     ldr pc, _irq
11     ldr pc, _fiq
12
13 _undefined_instruction: .word undefined_instruction
14 _software_interrupt:.word software_interrupt
15 _prefetch_abort:.word prefetch_abort
16 _data_abort:.word data_abort
17 _not_used:.word not_used
18 _irq:.word irq
19 _fiq:.word fiq
20
21 undefined_instruction:
22     nop
23
24 software_interrupt:
25     nop
26
27 prefetch_abort:
28     nop
29
30 data_abort:
31     nop
32
33 not_used:
34     nop
35
36 irq:
37     nop
38
39 fiq:
40     nop
41
42 reset:
43     bl set_svc
44
45 set_svc:
46     mrs r0, cpsr
47     bic r0, r0, #0x1f
48     orr r0, r0, #0xd3
49     msr cpsr, r0

黄色部分就是设置处理器在svc模式

原文地址:https://www.cnblogs.com/sanshijvshi/p/8335116.html

时间: 2024-10-11 23:11:13

设置SVC模式的相关文章

[国嵌笔记][033-034][设置svc模式]

[设置svc模式] 设置CPU为SVC模式 1.因为初始化系统需要有很高的权限,SVC模式具有该权限,所以首先要使系统工作在SVC(0b10011)模式 2.设置cprs为0xd3(0b11010011)表示设置处理器为svc模式,并且屏蔽irq和frq /* *名称:set_cpu_to_svc *描述:设置CPU为SVC模式 */ set_cpu_to_svc: mrs r0, cpsr bic r0, #0x1f orr r0, #0xd3 //F 1,I 1,M[4:0] 10110 m

6、异常向量表的学习---设置SVC模式

这是手册的资料,我们看到,要设置svc模式,就是要把我们的cpsr的后五位设置为0b10011即可.Cpsr的结构: 接下来,我们就来把cpsr的后五位设置为0b10011. 设置的思路: 首先把这五位清零(bic指令),使用orr往这五位写入0b10011.当然,这些操作的实现必须借助mrs和msr两个指令来完成(cpsr和spsr不能直接访问). 操作如下: 看运行的结果,设置成功. ? 看门狗实现 看门狗的结构图: 6410的看门狗的资料: 我们通过上面的看门狗的控制寄存器的设置就可以关闭

u-boot分析(四)---设置异常向量表|设置SVC模式

u-boot分析(四) 通过前三篇的分析,我们对u-boot已经有了整体的认识和掌握,但是我们仍然对于其部分硬件是如何初始化的不太清楚,所以接下来几篇博文我将会对我们在http://www.cnblogs.com/wrjvszq/archive/2015/01/10/4215627.html一文中总结出的u-boot的工作流程中的重要环节,结合文档加以分析. 今天我们会用到的文档: 1.        ARM Architecture Reference Manual:http://downlo

uboot初始化中,为何要设置CPU为SVC模式而不是设置为其他模式

在看Uboot的start.S文件时候,发现其最开始初始化系统,做的第一件事情,就是将CPU设置为SVC模式,但是S3C2440的CPU的core是ARM920T,其有7种模式,为何非要设置为SVC模式,而不是设置为其他模式呢?对此,经过一些求证,得出如下原因: 首先,先要了解ARM的CPU的7种模式是哪些: http://www.docin.com/p-73665362.html Table 3.1. ARM中CPU的模式 处理器模式 说明 备注 用户(usr) 正常程序工作模式 此模式下程序

Part5核心初始化_lesson2---设置svc模式

我们的Linux系统以及bootloader是工作在SVC模式!!怎么把处理器设置为SVC模式呢? CPSR寄存器或者SPSR寄存器最低5位可以设置模式,把该5位设置为0b10011, start.s文件

21.核心初始化之svc模式

要设置系统工作svc特权模式,从前面的学习知道这需要设置CPSR程序状态寄存器. 在ARM Architecture Reference Manual.pdf文档中,2.Programmers' Model的2.5.Program status register. 可以看到CPSR的最后五位:M[4:0],就是来设置系统工作的系统模式. 接下来就是把CPSR的最后五位设置为0b10011,就是完成了设置系统的SVC模式. 实现的思路是: 取得这五位 清零,使用bic位清零指令. 置第0,1,4位

ubuntu:NVIDIA设置性能模式,以降低CPU使用、温度

NVIDIA设置性能模式,以降低CPU使用.温度 ubuntu安装完NVIDIA显卡驱动后 终端输入 nvidia-settings 选择OpenGL Settings->Image Settings 向左是质量模式,向右是性能模式 选择性能模式降低CPU的使用

(iOS)确保设置话筒模式成功 AudioSessionSetProperty

本人编写过一个应用,需要把实时音频播放出来,并且要从话筒播放声音,为此,作以下操作: //Step 1: 初始化 AudioSessionInitialize(NULL,NULL, NULL, self); //Step 2: 必须设置成这样才能确保话筒模式成功 UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord; AudioSessionSetProperty(kAudioSessionProperty_AudioCateg

ORA-00265: 要求实例恢复, 无法设置 ARCHIVELOG 模式解决办法

解决了这个问题,方法如下: 从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options 断开 C:\Documents and Settings\yc>sqlplus sys/abcd as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 12月