ICC_EOIR0_EL1는 'Interrupt Controller End Of Interrupt Register 0'의 약자입니다. ICC_EOIR0_EL1 레지스터에 어떤 값을 써주면 GIC를 구성하는 CPU Interface에게 "명시된 인터럽트에 대한 처리를 끝냈다"라고 알려줍니다.
여기서 ICC_EOIR0_EL1 레지스터 이름에서 EOIR0를 눈겨여 봅시다. EOIR0의 가장 마지막에 있는 숫자인 0은 'Group 0' 인터럽트를 의미합니다. 이름이 유사한 ICC_EOIR1_EL1 레지스터의 EOIR1는 무엇을 의미할까요? EOIR1의 마지막에 있는 숫자 1은 'Group 1' 인터럽트 그룹을 뜻합니다.
ICC_EOIR0_EL1 레지스터에 대한 비트 맵은 다음 그림에서 확인할 수 있습니다.
그림 16.17 ICC_EOIR0_EL1 레지스터의 비트 맵
ICC_EOIR0_EL1 레지스터의 비트 맵은 EOIINTID로 구성돼 있습니다. 이 필드는 인터럽트 아이디(INTID)를 저장합니다.
EOIINTID, bits [23:0]
EOIINTID는 ICC_IAR0_EL1 레지스터를 통해 읽은 값입니다. 이 값을 bits [23:0] 비트에 써주면 “CPU Interface에게 인터럽트에 대한 처리를 마무리했다”라고 알립니다.
나머지 Bits [31:24]은 Reserved된 영역인데, 이름 그대로 예약된 비트입니다.
[정보] ICC_IAR1_EL1, ICC_EOIR0_EL1 레지스터의 중요성
ICC_IAR1_EL1와 ICC_EOIR0_EL1는 인터럽트 서비스 루틴을 실행하기 전에 반드시 설정해야 하는 레지스터이니 잘 기억합시다.



최근 덧글