Guillermo Austin Kim
Posts
998 posts[ARM프로세서] ARMv7: 인터럽트 타입 익셉션을 유발할 때 ARM 코어의 세부 동작
이어서 IRQ 익셉션이 발생하는 전체 흐름을 살펴보면서, 세부 동작을 알아봅시다. 그림 8.10 인터럽트 타입 익셉션을 유발할 때 변경되는 레지스터 그림 8.10은 IRQ 인터럽트 익셉션의 전체 실행 흐름을 나타내는데, 그림의 가운데 부분을 보면 ARM 코어가 하드웨어적으로 처리되는 부분이 슈도 코드로 표기돼 있습니다. 이어서 슈도 코드를 분석하면서 ARM 코어의 세부 동작을 알아보겠습니다. 먼저 01번째 줄을 봅시다. 01 R14_irq = 0xc000d000 + 0x4 IRQ 익셉션이 발생했으니 ARM 코어는 IRQ 모드로 변경할 준비를 하는데, 먼저 IRQ 모드에서만 사용되는 R14_irq 레지스터에 인터럽트가 발생한 주소에 0x8를 더해 저장합니다. IRQ 인터럽트가 발생할 시점에 실행된
[ARM프로세서] ARMv7: Undefined Instruction 익셉션을 유발할 때의 ARM 코어의 세부 동작
이어서 Undefined Instruction 익셉션이 발생하는 전체 흐름을 살펴보면서, 세부 동작을 알아봅시다. 그림 8.9 Undefined Instruction 익셉션을 유발할 때 변경되는 레지스터 그림 8.9는 Undefined Instruction 익셉션의 전체 실행 흐름인데, 그림의 가운데 부분을 보면 ARM 코어가 하드웨어적으로 처리되는 부분이 슈도 코드로 표기돼 있습니다. 이 슈도 코드를 분석하겠습니다. 먼저 01번째 줄을 봅시다. 01 R14_und = 0xc000d000 + 0x4 Undefined Instruction 익셉션이 발생했으니 ARM 코어는 Undefined(UND) 모드로 변경할 준비를 합니다. Undefined(UND) 모드에서만 사용되는 R14_und 레지
[ARM프로세서] ARMv7: 데이터 어보트(Data Abort)를 유발할 때 ARM 코어의 세부 동작
이어서 다음 그림을 보면서 데이터 어보트가 발생할 때 ARM 코어에서 이를 처리하는 세부 과정을 알아봅시다. 그림 8.8 데이터 어보트 익셉션을 유발할 때 변경되는 레지스터 ARM 코어가 데이터 어보트를 감지하면, 하드웨어적으로 레지스터를 어떻게 변경하는지, 그림의 가운데 부분에 보이는 슈도 코드를 분석하면서 알아봅시다. 먼저 01번째 줄을 분석하겠습니다. 01 R14_abt = 0xc000d000 + 0x8 데이터 어보트가 발생했으니 ARM 코어는 어보트 모드로 변경할 준비를 합니다. [정보]프리페치 어보트와 데이터 어보트를 유발할 때 공통으로 어보트 모드로 변경된다는 점을 기억합시다. 먼저 어보트 모드에서만 사용되는 R14_abt 레지스터에 데이터 어보트가 발생한 주소에 0x8를
[ARM프로세서] ARMv7: 프리페치 어보트(Prefetch Abort)가 발생할 때 ARM 코어의 세부 동작
프리패치 어보트가 발생하는 전체 흐름을 살펴보면서, 세부 동작을 알아봅시다. 그림 8.7 프리페치 어보트 익셉션을 유발할 때 변경되는 레지스터 그림 8.7은 8.2 절에서 봤던 그림과 비슷해 보입니다. 한 가지 차이점은 그림의 가운데 부분과 같이 ARM 프로세서 내부에서 처리되는 동작을 슈도 코드로 표현한 것입니다. 슈도 코드는 하드웨어적으로 처리되는 과정에 대한 이해를 돕기 위해 작성된 것이란 사실을 기억합시다. 이해를 돕기 위해 프리패치 어보트가 발생한 명령어를 실행한 주소가 0xc000d000이라고 가정하겠습니다. 먼저 01번째 줄을 봅시다. 01 R14_abt = 0xc000d000 + 0x4 프리패치 어보트가 발생했으니 ARM 코어는 어보트 모드로 변경할 준비를 하는데, 먼저 어보트
[공유] 5장 인터럽트: Q/A
'디버깅을 통해서 배우는 리눅스 커널의 구조와 원리'에 대한 책의 강의 동영상을 유튜브에 올리고 있는데요. 구독자님께서 질문을 주신 내용을 쉽게 정리해 포스팅합니다. 이 포스트를 읽고 리눅스 커널이 인터럽트를 처리하는 방식을 더 쉽게 이해하셨으면 좋겠습니다. Q: 인터럽트 벡터란 무엇인가? A: ARM 프로세서는 인터럽트를 익셉션의 한 종류로 처리합니다. 만약 인터럽트가 발생하면 ARM 프로세서는 프로그램 카운터를 인터럽트 벡터 주소로 넣어줍니다. Q: 인터럽트 벡터의 주소와 이 주소에는 어떤 코드가 있는가? A: ARM 프로세서는 인터럽트를 익셉션의 한 종류로 처리하며, 리눅스 커널에서 인터럽트가 발생하면 ARM 프로세서는 프로그램 카운터를 인터럽트 벡터 주소인 0xFFFF0018로 넣어줍니다.

![[CV] [Comi] 'あかね噺'(아카네 이야기) 22권. 아카네의 첫 전력 승부](https://img.zoomtrend.com/2026/06/08/1780982081-EC9D8CEC9585EC9D98EBA6ACEB93ACEC9CBCEBA19C.jpg)

