system register 접근 관련 질문드립니다.
linux-5.1.6의 head.S에 보면 다음과 같은 코드가 나옵니다.
mrs_s x6, SYS_ID_AA64MMFR2_EL1 |
이 코드는 ID_AA64MMFR2_EL1 레지스터의 내용을 x6으로 옮기는 명령을 encoding 된 형태로 emit 하는 코드인데요.
결국 아래 코드와 동일하다고 생각됩니다.
mrs x6, ID_AA64MMFR2_EL1 |
그렇다면 왜 아래가 아닌 위와 같은 형태로 코드가 짜여져 있을까요?
혹시 특별한 이유가 있는지, 아니면 아무 의미 없이 그저 랜덤인 것인지 궁금합니다.
(실제로 head.S에서 aa64mmfr1_el1 레지스터는 아래와 같은 형태로 접근됩니다.)
사소한 내용일지 모르나 매우 궁금합니다. ^^;
답변 부탁드립니다~!!!
.
안녕하세요? 문c 블로그(jake.dothome.co.kr)의 문영일입니다.
해당 gcc 버전이 특정 시스템 레지스터를 지원하지 못하면
엔코딩하여 명령을 만들어 사용합니다.
결국 ID_AA64MMFR1_EL1은 지원해도 ID_AA64MMFR2_EL1를 지원하지 않는 상황입니다.
감사합니다.