首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ARMv8-A上将ARM模式更改为系统模式(CPSR)

在ARMv8-A上将ARM模式更改为系统模式(CPSR)
EN

Stack Overflow用户
提问于 2017-07-15 00:14:18
回答 1查看 1.5K关注 0票数 0

我使用的是32位模式的ARM Cortex A53 (4核)处理器(ARMv8架构)。我需要使用以下指令进入系统模式:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-15 01:48:36

我为pi2和pi3退出hyp模式的代码(假设SD卡上没有config.txt ):

代码语言:javascript
复制
mrs r0,cpsr
bic r0,r0,#0x1F
orr r0,r0,#0x13
msr spsr_cxsf,r0
add r0,pc,#4
msr ELR_hyp,r0
eret

在raspberry pi网站上的裸体论坛上有很多人,关于这个主题也有很多变化。与过去的好日子不同,你不能只在HYP模式下更改一次cpsr,但如果你看一下eret指令,它会接受一个新的cpsr以及分支(需要一个新的lr来馈送到pc),而不是真正的返回,而是一种更改cpsr的方式。这就是我所知道的赤裸裸的人正在做的事情。

当然,这里需要一些假设来实现这一点,而且它们恰好与pi一起工作。

如果你有一个config.txt,那么你需要小心一点,图形处理器为arm放置的引导程序代码对内核进行“排序”,并让内核0通过,以及将所有内核置于HYP模式。(包括pi2和pi3),如果您选择击败它:

代码语言:javascript
复制
kernel_old=1
disable_commandline_tags=1

然后由您对核心进行排序

代码语言:javascript
复制
    mrs x0,mpidr_el1
    mov x1,#0xC1000000
    bic x1,x0,x1
    cbz x1,zero
not_zero:
    wfi
    b not_zero
zero:

所以你不会让他们四个几乎并行地运行相同的代码……

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45107469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档