Run if you want it
300x250

ARM Architecture/ARMv8 4

ARMv8 Exception Handling

Exception vector table에 mapping된 address로 Program Counter가 분기하게 되어 유발된 exception을 처리하는데 이를 Exception Handler라고 함. Synchronous Exception Handling 1. Memory Abort Memory Abort이 발생한 경우 ARM core는 PSTATE를 SPSR_EL1에 백업 PSTATE.EL 값을 변경할 EL로 업데이트 ELR_EL1 / ESR_EL1을 업데이트 이후 PC를 synchronous exeption handler인 VBAR_EL1 + 0x400의 주소로 분기하여 핸들러 호출을 통해 Memory Abort 처리 위 네 가지 과정은 Hardware적으로 처리 됨 이후 Exception vec..

ARMv8 Exception

Exception CPU 아키텍처 관점에서 기계어를 정상적으로 처리하지 못한 상황을 의미하며 이를 처리하기 위해 모든 CPU Architecture에서는 대개 Exception이 유발되면 해당 Exception 종류에 해당하는 특정 주소로 분기 ARM의 경우 Exception을 "외부에서 발생한 인터럽트나 정의되지 않은 명령어를 실행하려는 시도와 같은 이벤트를 처리하기 위해 실행되고 있는 프로세스를 멈추게하는 것"으로 정의하고 있으며, Exception을 처리하기 위해 다양한 정보들을 register에 업데이트 하고, 해당 Exception 종류에 해당하는 특정 주소로 분기하는 과정을 수행함. Exception Type ARMv8의 익셉션 종류는 대략 하기와 같이 분류 됨 Synchronous Excep..

ARMv8 Exception Level

Exception Level Overview ARMv7 대비 ARMv8에 새로 도입된 개념 중 하나인 Exception Level은 레벨마다 System의 resource에 대한 특권(Privilege)를 다르게 부여하여 각 레벨에 맞는 동작을 수행 Privileged / Unprivileged mode를 구분하는 이유(a.k.a user space와 kernel space를 구분한 이유) Privileged mode로 동작을 하게되면 시스템의 주요 설정과 메모리 등에 접근이 가능함 만약 User Application도 Privilege가 부여되어 시스템 메모리나 시스템 설정이 가능해진 상황에서 이러한 주요 resource를 잘못 사용할 경우 시스템에 critical한 error를 유발할 수 있음. 따라..

ARMv8 주요 register

General Purpose Register assembly instruction의 입력과 출력을 담당하는 register AArch64: 각 64bit size의 X0 - X30 register로 구성 AArch32: 각 32bit size의 W0 - W30 register로 구성 X30은 LR(Link Register)로 사용 됨 주로 데이터를 연산하거나 메모리에 접근하는 명령어를 실행할 때 address나 data를 저장하는 역할 Special Register 프로세스의 흐름을 저장하는 기능을 수행하는 register Exception Level별로 사용하는 레지스터를 구분하여 Exception 발생 이전의 Exception Level로 복귀할 때 주로 사용 됨. 종류 XZR / WZR(Zero R..

728x90