Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenintrin_i.h
Go to the documentation of this file.
00001 #pragma once 00002 00003 FORCEINLINE 00004 VOID 00005 KeArmHaltProcessor(VOID) 00006 { 00007 // 00008 // Enter Wait-For-Interrupt Mode 00009 // 00010 __asm__ __volatile__ ("mcr p15, 0, %0, c7, c0, 4" : : "r"(0) : "cc"); 00011 } 00012 00013 FORCEINLINE 00014 ARM_CONTROL_REGISTER 00015 KeArmControlRegisterGet(VOID) 00016 { 00017 ARM_CONTROL_REGISTER Value; 00018 __asm__ __volatile__ ("mrc p15, 0, %0, c1, c0, 0" : "=r"(Value.AsUlong) : : "cc"); 00019 return Value; 00020 } 00021 00022 FORCEINLINE 00023 ARM_ID_CODE_REGISTER 00024 KeArmIdCodeRegisterGet(VOID) 00025 { 00026 ARM_ID_CODE_REGISTER Value; 00027 __asm__ __volatile__ ("mrc p15, 0, %0, c0, c0, 0" : "=r"(Value.AsUlong) : : "cc"); 00028 return Value; 00029 } 00030 00031 FORCEINLINE 00032 ULONG 00033 KeArmFaultStatusRegisterGet(VOID) 00034 { 00035 ULONG Value; 00036 __asm__ __volatile__ ("mrc p15, 0, %0, c5, c0, 0" : "=r"(Value) : : "cc"); 00037 return Value; 00038 } 00039 00040 FORCEINLINE 00041 ULONG 00042 KeArmInstructionFaultStatusRegisterGet(VOID) 00043 { 00044 ULONG Value; 00045 __asm__ __volatile__ ("mrc p15, 0, %0, c5, c0, 1" : "=r"(Value) : : "cc"); 00046 return Value; 00047 } 00048 00049 FORCEINLINE 00050 ULONG 00051 KeArmFaultAddressRegisterGet(VOID) 00052 { 00053 ULONG Value; 00054 __asm__ __volatile__ ("mrc p15, 0, %0, c6, c0, 0" : "=r"(Value) : : "cc"); 00055 return Value; 00056 } 00057 00058 FORCEINLINE 00059 ARM_LOCKDOWN_REGISTER 00060 KeArmLockdownRegisterGet(VOID) 00061 { 00062 ARM_LOCKDOWN_REGISTER Value; 00063 __asm__ __volatile__ ("mrc p15, 0, %0, c10, c0, 0" : "=r"(Value.AsUlong) : : "cc"); 00064 return Value; 00065 } 00066 00067 FORCEINLINE 00068 ARM_TTB_REGISTER 00069 KeArmTranslationTableRegisterGet(VOID) 00070 { 00071 ARM_TTB_REGISTER Value; 00072 __asm__ __volatile__ ("mrc p15, 0, %0, c2, c0, 0" : "=r"(Value.AsUlong) : : "cc"); 00073 return Value; 00074 } 00075 00076 FORCEINLINE 00077 ARM_CACHE_REGISTER 00078 KeArmCacheRegisterGet(VOID) 00079 { 00080 ARM_CACHE_REGISTER Value; 00081 __asm__ __volatile__ ("mrc p15, 0, %0, c0, c0, 1" : "=r"(Value.AsUlong) : : "cc"); 00082 return Value; 00083 } 00084 00085 FORCEINLINE 00086 ARM_STATUS_REGISTER 00087 KeArmStatusRegisterGet(VOID) 00088 { 00089 ARM_STATUS_REGISTER Value; 00090 __asm__ __volatile__ ("mrs %0, cpsr" : "=r"(Value.AsUlong) : : "cc"); 00091 return Value; 00092 } 00093 00094 FORCEINLINE 00095 VOID 00096 KeArmControlRegisterSet(IN ARM_CONTROL_REGISTER ControlRegister) 00097 { 00098 __asm__ __volatile__ ("mcr p15, 0, %0, c1, c0, 0" : : "r"(ControlRegister.AsUlong) : "cc"); 00099 } 00100 00101 FORCEINLINE 00102 VOID 00103 KeArmTranslationTableRegisterSet(IN ARM_TTB_REGISTER Ttb) 00104 { 00105 __asm__ __volatile__ ("mcr p15, 0, %0, c2, c0, 0" : : "r"(Ttb.AsUlong) : "cc"); 00106 } 00107 00108 FORCEINLINE 00109 VOID 00110 KeArmDomainRegisterSet(IN ARM_DOMAIN_REGISTER DomainRegister) 00111 { 00112 __asm__ __volatile__ ("mcr p15, 0, %0, c3, c0, 0" : : "r"(DomainRegister.AsUlong) : "cc"); 00113 } 00114 00115 FORCEINLINE 00116 VOID 00117 KeArmLockdownRegisterSet(IN ARM_LOCKDOWN_REGISTER LockdownRegister) 00118 { 00119 __asm__ __volatile__ ("mcr p15, 0, %0, c10, c0, 0" : : "r"(LockdownRegister.AsUlong) : "cc"); 00120 } 00121 00122 FORCEINLINE 00123 VOID 00124 KeArmFlushTlb(VOID) 00125 { 00126 __asm__ __volatile__ ("mcr p15, 0, %0, c8, c7, 0" : : "r"(0) : "cc"); 00127 } 00128 00129 FORCEINLINE 00130 VOID 00131 KeArmInvalidateTlbEntry(IN PVOID Address) 00132 { 00133 __asm__ __volatile__ ("mcr p15, 0, %0, c8, c7, 1" : : "r"(Address) : "cc"); 00134 } 00135 00136 FORCEINLINE 00137 VOID 00138 KeArmInvalidateAllCaches(VOID) 00139 { 00140 __asm__ __volatile__ ("mcr p15, 0, %0, c7, c7, 0" : : "r"(0) : "cc"); 00141 } 00142 00143 FORCEINLINE 00144 VOID 00145 KeArmFlushIcache(VOID) 00146 { 00147 __asm__ __volatile__ ("mcr p15, 0, %0, c7, c5, 0" : : "r"(0) : "cc"); 00148 } 00149 00150 FORCEINLINE 00151 VOID 00152 KeArmWaitForInterrupt(VOID) 00153 { 00154 __asm__ __volatile__ ("mcr p15, 0, %0, c7, c0, 4" : : "r"(0) : "cc"); 00155 } Generated on Sat May 26 2012 04:36:05 for ReactOS by
1.7.6.1
|