ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

intrin_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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.