Guillermo Austin Kim
Posts
998 posts[Arm프로세서] Armv8: 익셉션 벡터 테이블(Exception Vector Table)
Armv8 아키텍처의 익셉션 벡터 테이블을 이루는 핵심 개념은 Armv7 아키텍처의 익셉션과 같습니다. Arm 코어는 익셉션을 감지하면 익셉션의 종류 별로 지정된 주소로 프로그램 카운터를 브랜치합니다. 익셉션 벡터 테이블은 익셉션 벡터로 구성된 테이블인데, 익셉션의 종류와 익셉션의 종류 별 오프셋 주소로 구성돼 있습니다. Armv7 아키텍처의 익셉션 벡터 테이블과의 차이점 그런데 Armv8 아키텍처의 익셉션 테이블은 Armv7 아키텍처의 익셉션 테이블과 어떤 차이점이 있을까요? 이 질문에 다음과 같이 답할 수 있습니다. ❑ 익셉션 레벨 별로 익셉션 벡터 테이블이 구성돼 있다. ❑ 익셉션 벡터의 주소가 0x80 바이트 간격으로 정렬돼 있다. 첫 번째 차이점은 익셉션을
[Arm프로세서] Procedure Call Standard for the Arm 관련 자료
함수 호출 규약은 arm 사에서 'Procedure Call Standard for the Arm'라고 부르는데요. 이와 관련된 Arm 아키텍처의 스팩 문서는 아래 링크에서 확인할 수 있습니다. 만약 PDF 포멧의 문서를 내려받고 싶으면 아래 링크에 접근해 문서를 내려 받으면 됩니다. 친절하게도 최신 버전의 문서를 올려놨네요. --- release 2020Q4 The biggest change in this release is the addition of 10 converted specifications: Procedure Call Standard for the Arm Architecture (aapcs32) ELF for the Arm Architecture
[Arm프로세서] Armv8: 레지스터 업데이트(익셉션을 이루는 기능)
Armv8 아키텍처에서 Arm 코어가 익셉션을 감지하면 특정 EL(익셉션 레벨)에서만 접근할 수 있는 레지스터를 다음과 같이 변경합니다. ❑ 익셉션이 발생한 시점의 프로세서의 상태를 나타내는 PSTATE 레지스터를 SPSR_ELx 레지스터에 백업 ❑ 익셉션이 발생한 순간에 실행된 주소 기준으로, 익셉션이 유발된 다음 명령어로 복귀할 주소를 ELR_ELx(익셉션 링크 레지스터) 레지스터에 백업 익셉션이 발생한 순간의 정보를 레지스터에 저장하는 이유는, 익셉션의 타입에 따라 익셉션이 발생하기 직전의 EL과 주소로 복귀하기 위해서입니다. 또한 Arm 코어는 익셉션이 발생한 세부 원인을 익셉션 신드롬 레지스터(Exception Syndrom Register: ES
[Arm프로세서] Armv8: 익셉션(Exception)의 유발요인
익셉션이 동작하는 원리의 전체 맥락과 흐름을 파악하려면 익셉션을 유발하는 원인을 구체적으로 알아야 합니다. 먼저 그림의 왼쪽 아랫 부분에 있는 원은 익셉션을 유발하는 요인을 나타내는데, 그 세부 항목은 다음과 같습니다. ❑ 메모리 어보트: 기존 Armv7 아키텍처에서 데이터 어보트(Data Abort), 프리페치 어보트(Prefetch Abort), Undefined Instruction 익셉션을 유발하는 상황 ❑ 외부 인터럽트(IRQ/FIQ) ❑ SW 인터럽트 익셉션을 유발하는 첫 번째 요인은 메모리 어보트를 유발하는 명령어를 실행했을 때입니다. Armv7 아키텍처에서 메모리 어보트를 유발하는 명령어를 실행했을 때 익셉션이 유발하듯, A
[리눅스커널] 로그 레벨을 업데이트하는 커밋(라즈베리 파이3)
아래 패치를 반영하면 로그 레벨을 5로 수정할 수 있습니다. diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b.dtsindex d69d6a187e0c..27abf73922b2 100644--- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts+++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts@@ -12,7 +12,7 @@ model = "Raspberry Pi 3 Model B"; chosen {- bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.e

