[Arm프로세서] 익셉션(Exception) 동작 슈도 코드 소개
By Guillermo Austin Kim | 2020년 12월 15일 |
Armv8 문서를 보면 Arm 코어에서 하드웨어적으로 처리하는 동작을 슈도 코드로 표기한 부분을 볼 수 있습니다.문서 이름과 해당 절은 다음과 같습니다. * 문서 이름: DDI0487Fc_armv8_arm.pdf * 해당 절 Part J Architectural Pseudocode J1.1 Pseudocode for AArch64 operation J1-7612 J1.1.1 aarch64/debug J1.1.2 aarch64/exceptions J1.2 Pseudocode for AArch32 operation 샘플 코드에 익숙한 소프트웨어 개발자들에게 샘플 혹은 슈도 코드는 유익한 정보입니다.특히 하이퍼바이저나 트러스트존과 같은 Arm Extention 기능의 동작 원리
[ARMv8] 익셉션 클래스가 구현된 코드 분석하기: 리눅스 커널
By Guillermo Austin Kim | 2020년 9월 23일 |
[ARMv8] 익셉션 클래스가 구현된 코드 분석하기: 리눅스 커널 이번 포스트에서는 ARMv8 에서 소개된 익셉션 클래스가 ARMv8 기반의 리눅스 커널에서 어떤 방식으로 구현됐는지 분석합니다. # 익셉션 클래스 소개 소스를 분석하기 전에 ARMv8의 익셉션 클래스를 Q/A 형식으로 소개합니다. Q: 익셉션 클래스란 무엇인가? 익셉션 클래스는 익셉션이 발생한 세부 원인(Cause)를 나타내며 Synchronous 유형의 익셉션이 발생했을 때 익셉션 클래스를 읽을 수 있습니다. Q: 익셉션 클래스는 언제 어떻게 읽을 수 있나? 익셉션 클래스는 Synchronous 유형의 익셉션이 발생했을 때 익셉션 신드롬 레지스터(Exception Syndrom Register)를 통해 읽습니다.익셉션 클래스는
[ARM프로세서] ARMv7: 프리페치 어보트(Prefetch Abort)가 발생할 때 ARM 코어의 세부 동작
By Guillermo Austin Kim | 2020년 11월 30일 |
프리패치 어보트가 발생하는 전체 흐름을 살펴보면서, 세부 동작을 알아봅시다. 그림 8.7 프리페치 어보트 익셉션을 유발할 때 변경되는 레지스터 그림 8.7은 8.2 절에서 봤던 그림과 비슷해 보입니다. 한 가지 차이점은 그림의 가운데 부분과 같이 ARM 프로세서 내부에서 처리되는 동작을 슈도 코드로 표현한 것입니다. 슈도 코드는 하드웨어적으로 처리되는 과정에 대한 이해를 돕기 위해 작성된 것이란 사실을 기억합시다. 이해를 돕기 위해 프리패치 어보트가 발생한 명령어를 실행한 주소가 0xc000d000이라고 가정하겠습니다. 먼저 01번째 줄을 봅시다. 01 R14_abt = 0xc000d000 + 0x4 프리패치 어보트가 발생했으니 ARM 코어는 어보트 모드로 변경할 준비를 하는데, 먼저 어보트