2017-06-04 45 views
0

我正在尝试使用armv7汇编指令集根据armv7架构编写一个启动加载程序? 例如:armv7的引导程序将为armv8工作吗?

设定CPU到SVC模式上电复位:

mrs r0, cpsr 
bic r0, r0,#0x1f 
orr r0, r0,#0xd3 
msr cpsr, r0 
mov pc, lr 

将在armv8相同的引导程序的工作。由于armv8也支持aarch32。 但另一方面它也有很多不同之处。

+0

它已经开始进入svc模式吧?为什么设置为svc模式,如果它已经存在。 ARMv7:“处理器在复位时进入超级用户模式。” –

+0

在最高实现的异常级别使用AArch32的实现中,如果该异常级别是EL3或EL1,则PE会在复位时进入Supervisor模式。 –

+0

我让你自己读剩下的,或者只是尽早读出启动时的cpsr,并保存或查看它... –

回答

1

不一定有几个原因,首先,如果你处于hyp模式,你不能从那个容易的地方回来。其次,如果你处于aarch64模式,那么这是一个不同的指令集。这部分取决于代码是在bootloader的早期版本中究竟是bootloader还是在这之前还有其他代码(这会让你处于这样的代码不会工作的状态)。

简短的回答,没有这个代码不仅不会总是为armv8工作,它不会总是为armv7工作。

相关问题