HCR_EL2

Category
아이템: HCR_EL2(2)
포스트 갯수2

[Arm프로세서] 하이퍼바이저: HCR_EL2 레지스터에 접근하는 어셈블리 코드 분석

By Guillermo Austin Kim | 2022년 2월 9일 | 
이번에는 HCR_EL2 레지스터를 읽은 예시 코드를 소개합니다.다음은 XEN 하이퍼바이저에서 호출되는 _show_registers() 함수의 어셈블리 명령어입니다. 01 000000000025c550 <_show_registers.isra.14>:02 25c550: a9ba53f3 stp x19, x20, [sp, #-96]!03 25c554: 12001c54 and w20, w2, #0xff...04 25c62c: d53c1101 mrs x1, hcr_el205 25c630: 90000140 adrp x0, 284000 <symbols_token_index+0x9700>06 25c634: 91242000 add x0, x0, #0x90807 25c638: 97ff

[Arm프로세서] 하이퍼바이저: HCR_EL2 레지스터에 접근하는 명령어

By Guillermo Austin Kim | 2022년 2월 8일 | 
HCR_EL2 레지스터를 구성하는 비트 맵 정보를 파악하면 "이 비트를 어떻게 설정할 수 있을까?"란 의문이 생길 수 있습니다. Armv8 아키텍처에서는 HCR_EL2 레지스터의 값을 읽고 쓸 수 있는 명령어를 제공합니다. HCR_EL2 레지스터의 값을 읽기 위해서 다음과 같은 형식의 명령어를 실행하면 됩니다. 그림 12.4 HCR_EL2 레지스터를 읽는 MRS 명령어 그림 12.4는 HCR_EL2 레지스터의 값을 Xt 레지스터로 로딩하는 명령어입니다. 위 그림에서 보이는 <Xt>는 Armv8 아키텍처에서 정의된 범용 레지스터를 뜻합니다. x0, x1, x2와 같은 레지스터가 지정될 수 있습니다. 이 명령어로 HCR_EL2 레지스터의 어떤 비트가 활성화돼 있는지 알 수 있습니다. mrs