[Arm프로세서] Armv8: SPSR_ELx - SPSR(Saved Program Status Register) 레지스터란
By Guillermo Austin Kim | 2022년 5월 2일 |
SPSR_ELx SPSR 레지스터는 Saved Program Status Register의 약자로 PSTATE 정보를 백업하는 용도로 사용됩니다. 따라서 SPSR 레지스터의 비트 맵은 PSTATE와 같습니다. 그렇다면 PSTATE는 SPSR 레지스터로 언제 백업될까요? "바로 익셉션이 유발될 때입니다." SPSR은 익셉션이 발생했을 때의 PSTATE의 정보를 저장하는 용도로 사용되며, 익셉션을 처리한 후 익셉션이 발생한 시점의 익셉션 레벨로 복귀하기 위해 사용됩니다. 즉, 익셉션과 관련된 처리를 하기 위해 사용됩니다. Arm 아키텍처 문서나 어셈블리 명령어를 분석하면 SPSR 보다는 SPSR_EL1 혹은 SPSR_EL0과 같은 규칙으로 SPSR 레지스터를 명시합니다. SPSR은 익셉션 레벨
[ARM] ARM 프로세서의 패밀리
By Guillermo Austin Kim | 2020년 9월 20일 |
ARM 사는 용도에 따라 제품군을 나눴는데, 현재 ARM의 최신 라인업인 Cortex 시리즈로 세분화돼 있습니다. 먼저 Cortex-A 제품군부터 알아봅시다. Cortex-A 시리즈 컴퓨터 제품을 위한 제품군입니다. 모바일에서 서버용 컴퓨터까지 다양한 플랫폼에서 개발되는 제품을 위한 ARM의 주력 상품군입니다. 스마트폰, TV 등과 같이 어느 정도 성능을 만족해야 하는 멀티미디어 기기나 많은 양의 데이터나 리소스를 처리해야 하는 임베디드 기기에서 주로 사용됩니다. 대부분 범용 운영체제인 리눅스와 윈도우 운영체제를 지원합니다. Cortex-R 시리즈 RTOS 기반 제품을 위한 라인업인데, R은 말 그대로 Real-time의 약자입니다. RTOS에서 MPU(메모리보호유닛)이나 TCM(Tight-Coup
[Arm프로세서] AAPCS: Armv7: pop 명령어
By Guillermo Austin Kim | 2021년 6월 9일 |
push 명령어를 실행한 후 함수가 종료되기 직전에 반드시 실행되는 명령어가 pop입니다. Arm 스팩 문서에서 pop 명령어 분석하기 이어서 Arm 스팩 문서에서 POP 명령어를 어떻게 설명하는지 알아 봅시다. A8.8.132 POP (ARM)Pop Multiple Registers loads multiple registers from the stack, loading from consecutive memory locations starting at the address in SP, and updates SP to point just above the loaded data. 스팩 문서의 내용은 다음과 같이 알기 쉽게 해석할 수 있습니다. 1.프로세스의 스택에 있는 데이터를 지정된 레지스터
ARM64 - Data Abort Exception(익셉션) Vector 실행
By 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