[ARMv8] EL1: el1_sync - 익셉션 벡터 코드와 ARM 스팩 문서 분석
By Guillermo Austin Kim | 2020년 10월 16일 |
이번 포스트에서는 ARMv8 아키텍처 기반에서 구현된 익셉션 벡터의 코드를 리뷰해보겠습니다.물론 리눅스 커널에서 확인된 코드입니다. ARMv8 아키텍처의 익셉션 벡터 코드 다음은 ARMv8 아키텍처 기반의 익셉션 벡터 코드입니다. /*02 * Exception vectors.03 */04 .pushsection ".entry.text", "ax"05 06 .align 1107 ENTRY(vectors)08 kernel_ventry 1, sync_invalid // Synchronous EL1t09 kernel_ventry 1, irq_invalid // IRQ EL1t10 kernel_ventry 1, fiq_invalid
[Arm프로세서] Armv8 익셉션 레벨이란
By Guillermo Austin Kim | 2021년 10월 22일 |
익셉션 레벨은 무엇일까요? 먼저 익셉션 레벨을 가장 명확하게 설명하는 Arm 아키텍처 문서를 보면서 익셉션 레벨을 소개하겠습니다. 익셉션 레벨에 대한 Arm 스팩 문서 분석 다음 Arm 스팩 문서를 분석하면서 익셉션 레벨을 배워 봅시다. (출처: ARMv8-A_Architecture_Reference_Manual_(Issue_A.a)) D1.1 Exception levels The ARMv8-A architecture defines a set of Exception levels, EL0 to EL3, where:• If ELn is the Exception level, increased values of n indicate increased software execution privilege.
[ARM] ARMv8 아키텍처의 레지스터
By Guillermo Austin Kim | 2020년 9월 25일 |
이번에는 ARMv8 아키텍처의 64비트 명령어 기준으로 레지스터 세트에 대해 알아봅시다. 다음은 ARM 스팩 문서에서 발췌한 내용입니다. 출처: DDI0487A_g_armv8_arm.pdfB1.2.1 Registers in AArch64 state In the AArch64 application level view, an ARM processing element has:R0-R30 31 general-purpose registers, R0 to R30. Each register can be accessed as: • A 64-bit general-purpose register named X0 to X30. • A 32-bit general-purpose register named W0 to W30.
[Arm프로세서] GIC: 인터럽트 소스와 타입
By Guillermo Austin Kim | 2022년 9월 2일 |
GIC는 4가지 타입의 인터럽트 소스를 처리하며 그 종류는 다음 테이블에서 확인할 수 있습니다. 표 16.2 GIC를 구성하는 인터럽트 소스의 종류 GIC는 4가지 인터럽트 입력을 처리하는데 기능에 따라 다음과 같이 분류할 수 있습니다. ● PPI, SPI, LPI: 외부 I/O 디바이스에서 발생하는 하드웨어 인터럽트 ● SGI: 외부 I/O 장치가 아닌 소프트웨어적으로 유발되는 인터럽트 외부 I/O 장치에서 인터럽트가 발생하면 SPI나 PPI를 통해 CPU 코어로 전달됩니다. 먼저 SPI와 PPI에 대해 알아볼까요?