2017-06-04 5 views
0

armv7アセンブリ命令セットを使用して、armv7アーキテクチャに従ってブートローダを作成しようとしていますか? 例:リセットのSVCモードへarmv7用のブートローダはarmv8で動作しますか?

設定CPU:

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

armv8上の同じブートローダーの仕事があります。 armv8もaarch32をサポートしています。 しかし、それはまた、多くの違いがあります。

+0

すでにSVMモードで起動していますか?それが既に存在する場合、なぜsvcモードに設定されますか? ARMv7:「プロセッサがリセット時にスーパーバイザモードに入る」 –

+0

実装されている最高の例外レベルがAArch32を使用している実装で、 例外レベルがEL3またはEL1の場合、PEはリセット時にスーパーバイザモードになります。 –

+0

あなたは自分で残りの部分を読むことができます。できるだけ早く起動時にcpsrを読み込んで保存するか、または表示してください。 –

答えて

1

必ずしもいくつかの理由がありますが、最初にハイパーモードになっていれば、それを簡単に元に戻すことはできません。第二に、あなたがaarch64モードであれば、それは別の命令セットです。だから、部分的には、このコードがブートローダの真ん中でブートローダの真ん中であるかどうか、あるいはこれが前に来た他のコードを持っているかどうかによって決まります。

短い答え、いいえこのコードは、常にarmv8のために働くことはないだけでなく、常にarmv7のために働いていません。

関連する問題