ppc64le Linuxについて調べてきましたが、POWER CPUがリトルエンディアンにどのように設定されているのかわかりません。私が理解したように、マシンとCPUの状態はファームウェアでデフォルトでビッグエンディアンモードで動作します。しかし、カーネルを起動するときに予想されるエンディアンに切り替える責任は何ですか?
詳細を扱わずにPOWER / PPCからカーネルを起動する方法は、次のようにまとめられています。
- ファームウェアは、マシンがマシンの状態をリセットしてリセットしたときに実行されます。
- ファームウェアはブートローダをロードして制御を転送します。
- ブートローダはカーネルをロードして起動します。
オンラインで検索しましたが、答えが見つかりませんでした。 grub、qemu-vof、slofなどのブートローダコードを見てみましたが、見ていることはたくさんありますが、はっきりしません。 Linuxのブートコードを見ると、時々MSR_LEの状態を読むことがわかりますが、起動時にこれを設定することはできません。
それでは、エンディアンの設定を担当するものは何ですか?ブートローダまたはカーネル?それとも別のものですか?
私の答えはブートローダーです。これは、ELFイメージをロードし、予想されるエンディアンで起動する役割を担うからです。しかし、これまでエントリポイントを開始したときにこれを明確にするASMソースを見つけることができませんでした。エンディアンの設定を担当するものと、その設定方法を詳しく説明するソースのリストを知りたいです。