更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
gic_v3.h 文件参考

浏览源代码.

函数

STATIC INLINE VOID GiccSetCtlr (UINT32 val)
 
STATIC INLINE VOID GiccSetPmr (UINT32 val)
 
STATIC INLINE VOID GiccSetIgrpen0 (UINT32 val)
 
STATIC INLINE VOID GiccSetIgrpen1 (UINT32 val)
 
STATIC INLINE UINT32 GiccGetSre (VOID)
 
STATIC INLINE VOID GiccSetSre (UINT32 val)
 
STATIC INLINE VOID GiccSetEoir (UINT32 val)
 
STATIC INLINE UINT32 GiccGetIar (VOID)
 
STATIC INLINE VOID GiccSetSgi1r (UINT64 val)
 
STATIC INLINE VOID GiccSetBpr0 (UINT32 val)
 

函数说明

◆ GiccGetIar()

STATIC INLINE UINT32 GiccGetIar ( VOID  )

在文件 gic_v3.h176 行定义.

177{
178 UINT32 temp;
179
180#ifdef LOSCFG_ARCH_SECURE_MONITOR_MODE
181 __asm__ volatile("mrs %0, " ICC_IAR0_EL1 : "=r"(temp));
182#else
183 __asm__ volatile("mrs %0, " ICC_IAR1_EL1 : "=r"(temp));
184#endif
185 DSB;
186
187 return temp;
188}
unsigned int UINT32
Definition: los_typedef.h:57
这是这个函数的调用关系图:

◆ GiccGetSre()

STATIC INLINE UINT32 GiccGetSre ( VOID  )

在文件 gic_v3.h145 行定义.

146{
147 UINT32 temp;
148#ifdef LOSCFG_ARCH_SECURE_MONITOR_MODE
149 __asm__ volatile("mrs %0, " ICC_SRE_EL3 : "=r"(temp));
150#else
151 __asm__ volatile("mrs %0, " ICC_SRE_EL1 : "=r"(temp));
152#endif
153 return temp;
154}
这是这个函数的调用关系图:

◆ GiccSetBpr0()

STATIC INLINE VOID GiccSetBpr0 ( UINT32  val)

在文件 gic_v3.h197 行定义.

198{
199 __asm__ volatile("msr " ICC_BPR0_EL1 ", %0" ::"r"(val));
200 ISB;
201 DSB;
202}
这是这个函数的调用关系图:

◆ GiccSetCtlr()

STATIC INLINE VOID GiccSetCtlr ( UINT32  val)

在文件 gic_v3.h112 行定义.

113{
114#ifdef LOSCFG_ARCH_SECURE_MONITOR_MODE
115 __asm__ volatile("msr " ICC_CTLR_EL3 ", %0" ::"r"(val));
116#else
117 __asm__ volatile("msr " ICC_CTLR_EL1 ", %0" ::"r"(val));
118#endif
119 ISB;
120}
这是这个函数的调用关系图:

◆ GiccSetEoir()

STATIC INLINE VOID GiccSetEoir ( UINT32  val)

在文件 gic_v3.h166 行定义.

167{
168#ifdef LOSCFG_ARCH_SECURE_MONITOR_MODE
169 __asm__ volatile("msr " ICC_EOIR0_EL1 ", %0" ::"r"(val));
170#else
171 __asm__ volatile("msr " ICC_EOIR1_EL1 ", %0" ::"r"(val));
172#endif
173 ISB;
174}
这是这个函数的调用关系图:

◆ GiccSetIgrpen0()

STATIC INLINE VOID GiccSetIgrpen0 ( UINT32  val)

在文件 gic_v3.h129 行定义.

130{
131 __asm__ volatile("msr " ICC_IGRPEN0_EL1 ", %0" ::"r"(val));
132 ISB;
133}
这是这个函数的调用关系图:

◆ GiccSetIgrpen1()

STATIC INLINE VOID GiccSetIgrpen1 ( UINT32  val)

在文件 gic_v3.h135 行定义.

136{
137#ifdef LOSCFG_ARCH_SECURE_MONITOR_MODE
138 __asm__ volatile("msr " ICC_IGRPEN1_EL3 ", %0" ::"r"(val));
139#else
140 __asm__ volatile("msr " ICC_IGRPEN1_EL1 ", %0" ::"r"(val));
141#endif
142 ISB;
143}
这是这个函数的调用关系图:

◆ GiccSetPmr()

STATIC INLINE VOID GiccSetPmr ( UINT32  val)

在文件 gic_v3.h122 行定义.

123{
124 __asm__ volatile("msr " ICC_PMR_EL1 ", %0" ::"r"(val));
125 ISB;
126 DSB;
127}
这是这个函数的调用关系图:

◆ GiccSetSgi1r()

STATIC INLINE VOID GiccSetSgi1r ( UINT64  val)

在文件 gic_v3.h190 行定义.

191{
192 __asm__ volatile("msr " ICC_SGI1R_EL1 ", %0" ::"r"(val));
193 ISB;
194 DSB;
195}
这是这个函数的调用关系图:

◆ GiccSetSre()

STATIC INLINE VOID GiccSetSre ( UINT32  val)

在文件 gic_v3.h156 行定义.

157{
158#ifdef LOSCFG_ARCH_SECURE_MONITOR_MODE
159 __asm__ volatile("msr " ICC_SRE_EL3 ", %0" ::"r"(val));
160#else
161 __asm__ volatile("msr " ICC_SRE_EL1 ", %0" ::"r"(val));
162#endif
163 ISB;
164}
这是这个函数的调用关系图: