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를 따라갈 수 있다.
'Programming > ARM' 카테고리의 다른 글
ARM core의 feature enable 여부 확인 방법 (0) | 2020.06.29 |
---|---|
ARM core architecture version 확인하기 (0) | 2020.04.02 |
[armv8] ESL_EL2 분석 - stage2 data abort (0) | 2019.12.11 |
arm asm - ubfs, lsl, orr, cbz, cbnz, stxr, ldxr (0) | 2019.05.16 |
cache - clean, Invalidate, Flush (0) | 2019.04.19 |