ReactOS  0.4.14-dev-358-gbef841c
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 }
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2343
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")

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 }
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2343
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")

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 }
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")

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 }
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")

Referenced by WinLdrSetProcessorContext().

◆ KeArmFaultAddressRegisterGet()

FORCEINLINE ULONG KeArmFaultAddressRegisterGet ( VOID  )

Definition at line 70 of file intrin_i.h.

71 {
72  ULONG Value;
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 }
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2343
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")
unsigned int ULONG
Definition: retypes.h:1

Referenced by KiDataAbortHandler(), and KiPrefetchAbortHandler().

◆ KeArmFaultStatusRegisterGet()

FORCEINLINE ULONG KeArmFaultStatusRegisterGet ( VOID  )

Definition at line 44 of file intrin_i.h.

45 {
46  ULONG Value;
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 }
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2343
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")
unsigned int ULONG
Definition: retypes.h:1

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 }
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")

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 }
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")

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 }
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")

◆ 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 }
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2343
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")

Referenced by HalpIdentifyProcessor(), and KiInitializeMachineType().

◆ KeArmInstructionFaultStatusRegisterGet()

FORCEINLINE ULONG KeArmInstructionFaultStatusRegisterGet ( VOID  )

Definition at line 57 of file intrin_i.h.

58 {
59  ULONG Value;
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 }
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2343
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")
unsigned int ULONG
Definition: retypes.h:1

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 }
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")

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 }
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")
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 }
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2343
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")

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 }
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")

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 }
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2343
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")

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 }
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2343
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")

◆ 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 }
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")

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 }
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")