본문 바로가기

Programming/ARM

TTBR0_EL1, TTBR1_EL1, TTBR0_EL2, VTTBR_EL2, TTBR1_EL2

헷갈리는 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를 적을 수 있다.