ReactOS 0.4.16-dev-329-g9223134
intrin_i.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

FORCEINLINE VOID KeArmHaltProcessor (VOID)
 
FORCEINLINE ARM_CONTROL_REGISTER KeArmControlRegisterGet (VOID)
 
FORCEINLINE ARM_ID_CODE_REGISTER KeArmIdCodeRegisterGet (VOID)
 
FORCEINLINE ULONG KeArmFaultStatusRegisterGet (VOID)
 
FORCEINLINE ULONG KeArmInstructionFaultStatusRegisterGet (VOID)
 
FORCEINLINE ULONG KeArmFaultAddressRegisterGet (VOID)
 
FORCEINLINE ARM_LOCKDOWN_REGISTER KeArmLockdownRegisterGet (VOID)
 
FORCEINLINE ARM_TTB_REGISTER KeArmTranslationTableRegisterGet (VOID)
 
FORCEINLINE ARM_CACHE_REGISTER KeArmCacheRegisterGet (VOID)
 
FORCEINLINE ARM_STATUS_REGISTER KeArmStatusRegisterGet (VOID)
 
FORCEINLINE VOID KeArmControlRegisterSet (IN ARM_CONTROL_REGISTER ControlRegister)
 
FORCEINLINE VOID KeArmTranslationTableRegisterSet (IN ARM_TTB_REGISTER Ttb)
 
FORCEINLINE VOID KeArmDomainRegisterSet (IN ARM_DOMAIN_REGISTER DomainRegister)
 
FORCEINLINE VOID KeArmLockdownRegisterSet (IN ARM_LOCKDOWN_REGISTER LockdownRegister)
 
FORCEINLINE VOID KeArmFlushTlb (VOID)
 
FORCEINLINE VOID KeArmInvalidateTlbEntry (IN PVOID Address)
 
FORCEINLINE VOID KeArmInvalidateAllCaches (VOID)
 
FORCEINLINE VOID KeArmFlushIcache (VOID)
 
FORCEINLINE VOID KeArmWaitForInterrupt (VOID)
 

Function Documentation

◆ KeArmCacheRegisterGet()

FORCEINLINE ARM_CACHE_REGISTER KeArmCacheRegisterGet ( VOID  )

Definition at line 109 of file intrin_i.h.

110{
112#ifdef _MSC_VER
113 Value.AsUlong = 0;
114#else
115 __asm__ __volatile__ ("mrc p15, 0, %0, c0, c0, 1" : "=r"(Value.AsUlong) : : "cc");
116#endif
117 return Value;
118}
__asm__(".p2align 4, 0x90\n" ".seh_proc __seh2_global_filter_func\n" "__seh2_global_filter_func:\n" "\tsub %rbp, %rax\n" "\tpush %rbp\n" "\t.seh_pushreg %rbp\n" "\tsub $32, %rsp\n" "\t.seh_stackalloc 32\n" "\t.seh_endprologue\n" "\tsub %rax, %rdx\n" "\tmov %rdx, %rbp\n" "\tjmp *%r8\n" "__seh2_global_filter_func_exit:\n" "\t.p2align 4\n" "\tadd $32, %rsp\n" "\tpop %rbp\n" "\tret\n" "\t.seh_endproc")
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413

Referenced by ArmHwDetect(), and KiSaveProcessorControlState().

◆ KeArmControlRegisterGet()

FORCEINLINE ARM_CONTROL_REGISTER KeArmControlRegisterGet ( VOID  )

Definition at line 18 of file intrin_i.h.

19{
21#ifdef _MSC_VER
22 Value.AsUlong = 0;
23#else
24 __asm__ __volatile__ ("mrc p15, 0, %0, c1, c0, 0" : "=r"(Value.AsUlong) : : "cc");
25#endif
26 return Value;
27}

Referenced by KiInitializeSystem(), KiSaveProcessorControlState(), and WinLdrSetProcessorContext().

◆ KeArmControlRegisterSet()

FORCEINLINE VOID KeArmControlRegisterSet ( IN ARM_CONTROL_REGISTER  ControlRegister)

Definition at line 135 of file intrin_i.h.

136{
137#ifdef _MSC_VER
138#else
139 __asm__ __volatile__ ("mcr p15, 0, %0, c1, c0, 0" : : "r"(ControlRegister.AsUlong) : "cc");
140#endif
141}

Referenced by KiInitializeSystem(), KiRestoreProcessorControlState(), and WinLdrSetProcessorContext().

◆ KeArmDomainRegisterSet()

FORCEINLINE VOID KeArmDomainRegisterSet ( IN ARM_DOMAIN_REGISTER  DomainRegister)

Definition at line 155 of file intrin_i.h.

156{
157#ifdef _MSC_VER
158#else
159 __asm__ __volatile__ ("mcr p15, 0, %0, c3, c0, 0" : : "r"(DomainRegister.AsUlong) : "cc");
160#endif
161}

Referenced by WinLdrSetProcessorContext().

◆ KeArmFaultAddressRegisterGet()

FORCEINLINE ULONG KeArmFaultAddressRegisterGet ( VOID  )

Definition at line 70 of file intrin_i.h.

71{
73#ifdef _MSC_VER
74 Value = 0;
75#else
76 __asm__ __volatile__ ("mrc p15, 0, %0, c6, c0, 0" : "=r"(Value) : : "cc");
77#endif
78 return Value;
79}
uint32_t ULONG
Definition: typedefs.h:59

Referenced by KiDataAbortHandler(), and KiPrefetchAbortHandler().

◆ KeArmFaultStatusRegisterGet()

FORCEINLINE ULONG KeArmFaultStatusRegisterGet ( VOID  )

Definition at line 44 of file intrin_i.h.

45{
47#ifdef _MSC_VER
48 Value = 0;
49#else
50 __asm__ __volatile__ ("mrc p15, 0, %0, c5, c0, 0" : "=r"(Value) : : "cc");
51#endif
52 return Value;
53}

Referenced by KiDataAbortHandler().

◆ KeArmFlushIcache()

FORCEINLINE VOID KeArmFlushIcache ( VOID  )

Definition at line 205 of file intrin_i.h.

206{
207#ifdef _MSC_VER
208#else
209 __asm__ __volatile__ ("mcr p15, 0, %0, c7, c5, 0" : : "r"(0) : "cc");
210#endif
211}

Referenced by HalSweepIcache().

◆ KeArmFlushTlb()

FORCEINLINE VOID KeArmFlushTlb ( VOID  )

Definition at line 175 of file intrin_i.h.

176{
177#ifdef _MSC_VER
178#else
179 __asm__ __volatile__ ("mcr p15, 0, %0, c8, c7, 0" : : "r"(0) : "cc");
180#endif
181}

Referenced by KeFlushProcessTb(), and KeFlushTb().

◆ KeArmHaltProcessor()

FORCEINLINE VOID KeArmHaltProcessor ( VOID  )

Definition at line 5 of file intrin_i.h.

6{
7 //
8 // Enter Wait-For-Interrupt Mode
9 //
10#ifdef _MSC_VER
11#else
12 __asm__ __volatile__ ("mcr p15, 0, %0, c7, c0, 4" : : "r"(0) : "cc");
13#endif
14}

◆ KeArmIdCodeRegisterGet()

FORCEINLINE ARM_ID_CODE_REGISTER KeArmIdCodeRegisterGet ( VOID  )

Definition at line 31 of file intrin_i.h.

32{
34#ifdef _MSC_VER
35 Value.AsUlong = 0;
36#else
37 __asm__ __volatile__ ("mrc p15, 0, %0, c0, c0, 0" : "=r"(Value.AsUlong) : : "cc");
38#endif
39 return Value;
40}

Referenced by HalpIdentifyProcessor(), and KiInitializeMachineType().

◆ KeArmInstructionFaultStatusRegisterGet()

FORCEINLINE ULONG KeArmInstructionFaultStatusRegisterGet ( VOID  )

Definition at line 57 of file intrin_i.h.

58{
60#ifdef _MSC_VER
61 Value = 0;
62#else
63 __asm__ __volatile__ ("mrc p15, 0, %0, c5, c0, 1" : "=r"(Value) : : "cc");
64#endif
65 return Value;
66}

Referenced by KiPrefetchAbortHandler().

◆ KeArmInvalidateAllCaches()

FORCEINLINE VOID KeArmInvalidateAllCaches ( VOID  )

Definition at line 195 of file intrin_i.h.

196{
197#ifdef _MSC_VER
198#else
199 __asm__ __volatile__ ("mcr p15, 0, %0, c7, c7, 0" : : "r"(0) : "cc");
200#endif
201}

Referenced by KeInvalidateAllCaches().

◆ KeArmInvalidateTlbEntry()

FORCEINLINE VOID KeArmInvalidateTlbEntry ( IN PVOID  Address)

Definition at line 185 of file intrin_i.h.

186{
187#ifdef _MSC_VER
188#else
189 __asm__ __volatile__ ("mcr p15, 0, %0, c8, c7, 1" : : "r"(Address) : "cc");
190#endif
191}
static WCHAR Address[46]
Definition: ping.c:68

Referenced by KeInvalidateTlbEntry(), KiFlushSingleTb(), and MiFlushTlb().

◆ KeArmLockdownRegisterGet()

FORCEINLINE ARM_LOCKDOWN_REGISTER KeArmLockdownRegisterGet ( VOID  )

Definition at line 83 of file intrin_i.h.

84{
86#ifdef _MSC_VER
87 Value.AsUlong = 0;
88#else
89 __asm__ __volatile__ ("mrc p15, 0, %0, c10, c0, 0" : "=r"(Value.AsUlong) : : "cc");
90#endif
91 return Value;
92}

Referenced by KiSaveProcessorControlState().

◆ KeArmLockdownRegisterSet()

FORCEINLINE VOID KeArmLockdownRegisterSet ( IN ARM_LOCKDOWN_REGISTER  LockdownRegister)

Definition at line 165 of file intrin_i.h.

166{
167#ifdef _MSC_VER
168#else
169 __asm__ __volatile__ ("mcr p15, 0, %0, c10, c0, 0" : : "r"(LockdownRegister.AsUlong) : "cc");
170#endif
171}

Referenced by KiRestoreProcessorControlState().

◆ KeArmStatusRegisterGet()

FORCEINLINE ARM_STATUS_REGISTER KeArmStatusRegisterGet ( VOID  )

Definition at line 122 of file intrin_i.h.

123{
125#ifdef _MSC_VER
126 Value.AsUlong = _ReadStatusReg(0);
127#else
128 __asm__ __volatile__ ("mrs %0, cpsr" : "=r"(Value.AsUlong) : : "cc");
129#endif
130 return Value;
131}

Referenced by KeDisableInterrupts(), KfLowerIrql(), KfRaiseIrql(), and KiSaveProcessorControlState().

◆ KeArmTranslationTableRegisterGet()

FORCEINLINE ARM_TTB_REGISTER KeArmTranslationTableRegisterGet ( VOID  )

Definition at line 96 of file intrin_i.h.

97{
99#ifdef _MSC_VER
100 Value.AsUlong = 0;
101#else
102 __asm__ __volatile__ ("mrc p15, 0, %0, c2, c0, 0" : "=r"(Value.AsUlong) : : "cc");
103#endif
104 return Value;
105}

◆ KeArmTranslationTableRegisterSet()

FORCEINLINE VOID KeArmTranslationTableRegisterSet ( IN ARM_TTB_REGISTER  Ttb)

Definition at line 145 of file intrin_i.h.

146{
147#ifdef _MSC_VER
148#else
149 __asm__ __volatile__ ("mcr p15, 0, %0, c2, c0, 0" : : "r"(Ttb.AsUlong) : "cc");
150#endif
151}

Referenced by KiSwapContextExit(), KiSwapProcess(), and WinLdrSetProcessorContext().

◆ KeArmWaitForInterrupt()

FORCEINLINE VOID KeArmWaitForInterrupt ( VOID  )

Definition at line 215 of file intrin_i.h.

216{
217#ifdef _MSC_VER
218#else
219 __asm__ __volatile__ ("mcr p15, 0, %0, c7, c0, 4" : : "r"(0) : "cc");
220#endif
221}