【发布时间】:2017-12-19 19:41:40
【问题描述】:
我在 32 位模式下使用 ARM Cortex A53(4 核)处理器(ARMv8 架构)。我需要使用这条指令进入系统模式:
cpsid if, #0x1F
但是这条指令 cps 使我的系统崩溃。在 ARM1176JZF-S(ARMv6 架构)上,这条确切的线路完美无缺。我调查了一下,它似乎与低权限级别有关,但是 svc 指令并没有像我想象的那样解决问题。在这个架构中我需要做什么来完成系统模式?
控制位来源: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344i/ch02s14s08.html
这是我从中获得 CPS 信息的地方(在更改系统模式时): http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dai0527a/index.html
【问题讨论】:
-
这是什么芯片,在你尝试之前你处于什么模式? (和执行级别)
-
@old_timer SoC 是 BCM 2837。在 Aarch32 模式下使用 Raspberry Pi 3。异常级别并不为人所知,但我能够从 CPSR 获得 M 位 [4:0]。不幸的是,这些位的输出没有任何意义。结果是 0b00101,据我所知,它与任何模式都没有关联。
-
您是否在没有 config.txt 的情况下进行引导?并得到你所得到的?
-
@old_timer 我们正在使用 config.txt,它看起来像:“device_tree=”(未设置值默认为我们正在使用的 atags)。据我所知,不需要在 config.txt 中输入与我的问题相关的任何内容,但如果我错了,请纠正我。
-
当然有一个问题,你为什么要进入svc模式,hyp模式让一些事情变得更容易,但当然取决于你想要做什么......