Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

46107
469
422678


[Arm프로세서] GIC: GICD_IGRPMODR<n> 레지스터 Arm: GIC

GICD_IGRPMODR<n>는 Interrupt Group Modifier Registers으로 인터럽트 그룹을 설정할 때 사용되는 레지스터됩니다. 여기서 <n>의 범위는 0~31입니다. 

GICD_IGRPMODR<n> 레지스터는 1개의 비트로 인터럽트의 그룹 속성을 설정하므로, 하나의 레지스터로 32개의 인터럽트의 속성을 설정할 수 있습니다. <n>의 범위가 0~31이므로 1024(1024 = 32 x 32)개의 인터럽트의 설정할 수 있습니다.

GICD_CTLR.DS이면 GICD_IGRPMODR<n> 는 지정된 인터럽트를 다음과 같이 설정합니다.

   * Secure Group 0.
   * Non-secure Group 1.
   * Secure Group 1.

GICD_IGRPMODR<n> 레지스터의 비트 맵은 다음과 같습니다.

 
그림 16.11 GICD_IGRPMODR<n> 레지스터의 비트 맵

GICD_IGRPMODR<n> 레지스터를 구성하는 비트 맵은 Group_modifier_bit으로 구성돼 있습니다. Group_modifier_bit은 인터럽트를 시큐어로 설정하는 기능입니다.
 
Group_modifier_bit는 용어 그대로 Group Modifier를 설정하는 비트로 인터럽트를 시큐어 혹은 논 시큐어 중 하나로 설정합니다. GICD_IGROUPR 레지스터를 구성하는 Group status 비트와의 조합으로 인터럽트를 다음과 같은 그룹으로 설정할 수 있습니다.

표 16.4 GICD_IGRPMODR와 GICD_IGROUPR로 인터럽트 그룹을 설정하는 방식

GICD_IGRPMODR와 GICD_IGROUPR 레지스터를 통해 인터럽트를 논시큐어 혹은 시큐어로 설정할 수 있습니다. 표 16.4를 보면 알 수 있듯이 GICD_IGRPMODR를 설정하면 인터럽트를 시큐어로 설정합니다. 그래서 Trusted OS에서 GICD_IGRPMODR 레지스터를 설정하는 경우가 많습니다.


덧글

댓글 입력 영역