Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

240
557
422298


[Arm프로세서] GIC: ICC_CTLR_EL1 레지스터 Arm: GIC

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으로 설정하는 기능입니다.


덧글

댓글 입력 영역