헷갈리는 TTBR register들의 역할을 정리해 보았다.
참조 : https://developer.arm.com/docs/100942/latest/hypervisor-software
TTBR0_EL1 : EL1에서 동작. 하위 mem (0x00000000_00000000 ~ 0x0000FFFF_FFFFFFFF) user space 는 translation 되고, kernel 은 identical mapping (VA <-> PA)
TTBR1_EL1 : EL1에서 동작. 상위 mem (0xFFFF0000_00000000 ~ 0xFFFFFFFF_FFFFFFFF) user space 는 translation 되고, kernel 은 identical mapping (VA <-> PA)
TTBR0_EL2 : EL2에서 동작하는 HV의 stage2 level1 translation을 위한 page table의 base address (IPA <-> PA)
VTTBR_EL2 : Guest OS의 stage2 translation을 위해서 사용하는 page table의 base address. (IPA <-> PA 를 위한 table이라는 사실은 TTBR0_EL2와 동일하나, TTBR0_EL2와는 별개의 register 이다.)
TTBR1_EL2 : (원래 EL2에는 TTBR0 까지만 제공되었었다) VHE가 enable 되었을때 사용할 수 있는 register로써, EL2에서 OS kernel이 동작할때, EL0에서 동작하는 user space 와의 translation table의 base address를 적을 수 있다.
'Programming > ARM' 카테고리의 다른 글
NMI (nun-maskable interrupt) (0) | 2020.08.13 |
---|---|
ARM core의 feature enable 여부 확인 방법 (0) | 2020.06.29 |
ARM core architecture version 확인하기 (0) | 2020.04.02 |
[arm] EL2 에서 EL1의 virtual address 보기 (0) | 2019.12.11 |
[armv8] ESL_EL2 분석 - stage2 data abort (0) | 2019.12.11 |