본문 바로가기

Programming/ARM

[arm] EL2 에서 EL1의 virtual address 보기

EL2 mode 에서 동작하는 code 에서 vbar_el1 값을 읽으면 아래와 같이 보인다.

 

VBAR_EL1        FFFFFF8008082000

VBAR_EL2        00000000800BC800

 

vbar_el2 의 address 값을 d.l 로 보면, 아래와 같이 exception vector table을 볼 수 있으나, vbar_el1의 값을 따라가 보면 아무것도 볼 수 없다.

 

0x800BC800

_arm64_vectors_base:

        .global arm_vectors_minimal

arm_vectors_minimal:

        // SPSel == 0

        _arm64_fault                            // Synchronous EL2

        _arm64_fault                            // IRQ EL2

        _arm64_fault                            // FIQ EL2

        _arm64_fault                            // Error EL2

 

이유는 vbar_el1 에 저장된 값이 el1 에서 사용되는 virtual address 이고, 

따라서 el1 으로 이동해서 이를 IPA나 PA로 변경해서 그 주소를 따라가야지만 el1 의 exception vector table code를 따라갈 수 있다.