아래는 stage2 mmu에서 data abort가 발생했을때 확인된 ESR_EL2 를 분석한 내용이다.
ESR (Hexadecimal format, 'q' or 'Q' : Terminate): 0x93830006
2 2 2 1 1 8 4 0 6 2 8 4 0 ----------------------------------------- 1001 0011 1000 0011 0000 0000 0000 0110 ----------------------------------------- ============================================================== Exception from a Data Abort from a lower exception level ============================================================== EC, bits [31:26]: 100100 Exception Class IL, bit [25]: 1 Instruction Length for synchronous exceptions ISS : 1 1000 0011 0000 0000 0000 0110
ISV, bit [24]: Instruction syndrome valid 1 Bits[23:0] of the ISS field holds IMPLEMENTATION DEFINED syndrome information that can be used to provide additional information about the SError interrupt.
SAS, bits [23:22]: 10 Syndrome Access Size SSE, bit [21]: 0 Syndrome Sign Extend SRT, bits [20:16]: 00011 Syndrome Register transfer SF, bit [15]: 0 Width of the register accessed by the instruction is Sixty-Four AR, bit [14]: 0 Acquire/Release VNCR, bit [13]: 0 Indicates that the fault came from use of VNCR_EL2 register by EL1 code SET, bits [12:11]: 00 Synchronous Error Type FnV, bit [10]: 0 FAR not Valid EA, bit [9]: 0 External abort type CM, bit [8]: 0 Cache maintenance S1PTW, bit [7]: 0 For a stage 2 fault, indicates whether the fault was a stage 2 fault on an access made for a stage 1 translation table walk stage 2 fault인지, stage 1 fault인지를 구분짓는것이 아닌, table walk 중에 발생한 fault 인지 아닌지를 구별하는 field임 WnR, bit [6]: 0 Write not Read DFSC, bits [5:0]: 000110 Data Fault Status Code
참고 : table walk(tablewalk) 란? MMU가 pagetable(tranlation table)을 가지고 오기 위해서 DRAM에 access하는 동작 |
'Programming > ARM' 카테고리의 다른 글
ARM core architecture version 확인하기 (0) | 2020.04.02 |
---|---|
[arm] EL2 에서 EL1의 virtual address 보기 (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 |
arm interrupt mask / unmask 의 의미 (0) | 2019.01.11 |