ppc64le Linux에 대해 조사해 왔지만 POWER CPU가 리틀 엔디안으로 어떻게 설정되어 있는지 잘 모르겠습니다. 내가 이해한 바에 따르면, 머신과 CPU 상태는 펌웨어에서 기본적으로 빅엔디안 모드로 실행됩니다. 그러나 커널을 부팅할 때 예상되는 엔디안으로 전환하는 책임은 무엇입니까?
자세한 내용을 다루지 않고 POWER/PPC에서 커널을 부팅하는 방법은 다음과 같이 요약됩니다.
- 펌웨어는 기계가 기계 상태를 재설정하고 재설정할 때 실행됩니다.
- 펌웨어는 부트로더를 로드하고 제어를 전달합니다.
- 부트로더는 커널을 로드하고 시작합니다.
온라인으로 검색했지만 답을 찾지 못했습니다. grub, qemu-vof, slof와 같은 부트로더 코드를 살펴보았는데 살펴볼 내용이 많지만 명확하지 않습니다. Linux 부팅 코드를 보니 가끔 MSR_LE 상태를 읽는 것을 볼 수 있지만 부팅 시 이를 설정하는 것은 볼 수 없습니다.
그렇다면 엔디안 설정을 담당하는 것은 무엇입니까? 부트로더 또는 커널? 아니면 다른 것인가요?
내 대답은 부트로더입니다. ELF 이미지를 로드하고 예상되는 엔디안으로 부팅하는 역할을 담당하기 때문입니다. 그러나 지금까지 진입점을 시작할 때 이를 명확하게 해주는 ASM 소스를 찾지 못했습니다. 엔디안 설정을 담당하는 것이 무엇인지, 그리고 그 설정 방법을 자세히 설명하는 소스 목록을 알고 싶습니다.