DATAABORT

포스트: 3
Tags

Posts

3 posts

[ARM프로세서] ARMv7: 데이터 어보트(Data Abort)를 유발할 때 ARM 코어의 세부 동작

Guillermo Austin Kim|2020년 11월 30일

이어서 다음 그림을 보면서 데이터 어보트가 발생할 때 ARM 코어에서 이를 처리하는 세부 과정을 알아봅시다. 그림 8.8 데이터 어보트 익셉션을 유발할 때 변경되는 레지스터 ARM 코어가 데이터 어보트를 감지하면, 하드웨어적으로 레지스터를 어떻게 변경하는지, 그림의 가운데 부분에 보이는 슈도 코드를 분석하면서 알아봅시다. 먼저 01번째 줄을 분석하겠습니다. 01 R14_abt = 0xc000d000 + 0x8 데이터 어보트가 발생했으니 ARM 코어는 어보트 모드로 변경할 준비를 합니다. [정보]프리페치 어보트와 데이터 어보트를 유발할 때 공통으로 어보트 모드로 변경된다는 점을 기억합시다. 먼저 어보트 모드에서만 사용되는 R14_abt 레지스터에 데이터 어보트가 발생한 주소에 0x8를

[Linux][Kernel] data abort@cpuacct_charge - 리눅스 커널

Guillermo Austin Kim|2018년 1월 25일

CPU3에서 실행 중인 "Binder:15701_2" 프로세스가 데이터 어보트로 커널 크래시가 발생했습니다.커널 로그가 데이터 어보트 발생 시 어떤 동작을 했는지 레지스터 정보와 함께 알려주네요. [69350.929482] <26>Unable to handle kernel paging request at virtual address 11ad4e80[69350.929511] <26>pgd = d57f0000[69350.929527] <22>[11ad4e80] *pgd=00000000[69350.929548] <6>Internal error: Oops: 5 [#1] PREEMPT SMP ARM[69350.929563] Modules linked in:

ARM64 - Data Abort Exception(익셉션) Vector 실행

Guillermo Austin Kim|2017년 12월 29일

이번 시간에는 Abort 즉 프로그램에 문제가 생겨서 Exception이 생겼을 때 동작 흐름에 대해점검해보고자 해요. ARM에 대한 자료와 세미나를 통해 Exception에 대해서 엄청나게 많이 들었잖아요.뭐, data abort, prefetch abort, undefined abort 등등이죠. 이제 ARM64 아키텍처에서는 이 Abort를 어떻게 처리하고 있는 지 살펴보도록 할께요 우선 아래 코드와 같이 익셉션 벡터가 정의되어 있구요.그런데 abort가 발생할 때는 el1_sync 벡터로 프로그램 카운터가 이동하게 되어 있어요./* * Exception vectors. */ .align 11ENTRY(vectors) ventry el1_sync_invalid // Synchronous E