ICC_CTLR_EL1는 Interrupt Controller Control Register (EL1)로 CPU Interface의 세부 동작을 설정하는 레지스터입니다. CPU Interface의 세부 속성을 설정하는 가장 중요한 레지스터 중 하나이므로 GIC를 사용하는 시스템에서는 부팅 할 때 ICC_CTLR_EL1 레지스터를 설정해야 합니다.
다음 그림은 ICC_CTLR_EL1 레지스터의 비트 필드입니다.
그림 16.20 ICC_CTLR_EL1 레지스터의 비트 맵
먼저 ExtRange 비트를 봅시다.
ExtRange, bit [19]
추가 인터럽트 아이디 범위를 설정할 수 있습니다. 비트에 따라 다음과 같이 설정할 수 있습니다.
0b0: CPU interface는 1024~8191 범위의 인터럽트 아이디를 지원하지 않음
0b1: CPU interface는 1024~8191 범위의 인터럽트 아이디를 지원함
ExtRange는 보통 부팅할 때 설정되는 비트입니다.
RSS, bit [18]
Range Selector를 지원하는 비트로 다음과 같이 설정할 수 있습니다.
0b0: SGI에 대한 affinity level 0의 값의 범위를 0~15로 지정
0b1: SGI에 대한 affinity level 0의 값의 범위를 0~255로 지정
A3V, bit [15]
Affinity 3가 유효한지 나타내는 비트입니다.
0b0: CPU interface 로직이 Affinity 3에 대한 0값을 지원
0b1: CPU interface 로직이 Affinity 3에 대한 논-제로값을 지원
SEIS, bit [14]
SEI(asynchronous SError interrupt)를 지원하는 비트입니다.
0b0: CPU interface는 SEI를 지원
0b1: CPU interface는 SEI를 지원
IDbits, bits [13:11]
ID를 저장하는데 읽기 전용입니다.
0b000: 16 bits.
0b001: 24 bits.
PRIbits, bits [10:8]
우선 순위 비트의 사이즈를 지정하는 비트입니다. 이 비트는 2개 시큐어 상태에서 32 레벨의 피지컬한 우선 순위가 구현돼야 사용됩니다.
PMHE, bit [6]
우선 순위 마스크 힌트를 활성화하는 비트입니다. 인터럽트를 분배하기 위해 PMR 레지스터를 제어하는 용도로 사용됩니다.
0b0: ICC_PMR_EL1를 비활성화
0b1: ICC_PMR_EL1를 활성화
EOImode, bit [1]
현재 시큐어 상태의 EOI(End of Interrupt) 모드를 설정합니다. EOI(End of Interrupt) 레지스터의 값을 쓰면 인터럽트를 비활성화할 수 있는 레지스터입니다.
0b0: ICC_EOIR0_EL1와 ICC_EOIR1_EL1 가 우선 순위 드랍과 인터럽트 비활성화 기능을 지원
0b1: ICC_EOIR0_EL1와 ICC_EOIR1_EL1는 우선 순위 드랍만 지원합니다. 대신 ICC_DIR_EL1 레지스터가 인터럽트 비활성화를 지원
CBPR, bit [0]
Common Binary Point Register입니다. 인터럽트 선점을 virtual Group 0 혹은 virtual Group 1으로 설정하는 기능입니다.



최근 덧글