適用範囲:
Arm v8 Architecture
回答:
従来のArmv7-Aアーキテクチャでは、リセット時には定義されているリセットベクタからリセットハンドラが呼び出されそこから実行開始をしました。
Armv8-Aアーキテクチャではリセットがかかると、実装されている最高の例外レベル(Cortex-A5xファミリの場合はEL3)から実行を開始します。
どの実行状態から実行開始するかは実装依存です。両方の実行状態をサポートしている場合、初期状態を制御する信号を持っているのが一般的です。
(例:Cortex-A57のAA64nAA32信号)
また実装されている最高の例外レベルのReset Management Register(RMR_ELn) はプロセッサ起動時の実行状態を制御し、AArch32またはAArch64におけるウォームリセットを可能にします。
どこから実行開始されるかは実行状態に依存します:
AArch64:
スタートアドレスは実装依存です。例外状態に応じて、一般的には信号(例:Cortex-A57のRVBARADDR)で制御されます。ソフトウェアはRVBAR_ELnレジスタからリセットアドレスを読みだすことができます('n'は実装されている最高位の例外レベル)。
AArch32:
利用可能なスタートアドレスはArmv7-Aと同じです:0x0, 0xFFFF0000 あるいは実装定義されたアドレス
実装定義されたアドレスが使用されるとプロセッサはこのアドレスをMVBARレジスタで、あるいはもしEL3が実装されていなければRVBAR32レジスタでレポートします。
より詳細についてはArchitecture Reference Manualを参照してください。