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

cpu.c
Go to the documentation of this file.
00001 /*
00002  * PROJECT:         ReactOS Kernel
00003  * LICENSE:         GPL - See COPYING in the top level directory
00004  * FILE:            ntoskrnl/ke/i386/cpu.c
00005  * PURPOSE:         Routines for CPU-level support
00006  * PROGRAMMERS:     Alex Ionescu (alex.ionescu@reactos.org)
00007  */
00008 
00009 /* INCLUDES *****************************************************************/
00010 
00011 #include <ntoskrnl.h>
00012 #define NDEBUG
00013 #include <debug.h>
00014 
00015 /* GLOBALS *******************************************************************/
00016 
00017 /* CPU Features and Flags */
00018 ULONG KeLargestCacheLine = 0x40;
00019 ULONG KeDcacheFlushCount = 0;
00020 ULONG KeIcacheFlushCount = 0;
00021 ULONG KiDmaIoCoherency = 0;
00022 BOOLEAN KiSMTProcessorsPresent;
00023 
00024 /* CPU Signatures */
00025 #if 0
00026 CHAR CmpIntelID[]       = "GenuineIntel";
00027 CHAR CmpAmdID[]         = "AuthenticAMD";
00028 CHAR CmpCyrixID[]       = "CyrixInstead";
00029 CHAR CmpTransmetaID[]   = "GenuineTMx86";
00030 CHAR CmpCentaurID[]     = "CentaurHauls";
00031 CHAR CmpRiseID[]        = "RiseRiseRise";
00032 #endif
00033 
00034 /* SUPPORT ROUTINES FOR MSVC COMPATIBILITY ***********************************/
00035 
00036 VOID
00037 NTAPI
00038 CPUID(IN ULONG CpuInfo[4],
00039       IN ULONG InfoType)
00040 {
00041     RtlZeroMemory(CpuInfo, 4 * sizeof(ULONG));
00042 }
00043 
00044 VOID
00045 WRMSR(IN ULONG Register,
00046       IN LONGLONG Value)
00047 {
00048 }
00049 
00050 LONGLONG
00051 RDMSR(IN ULONG Register)
00052 {
00053     LARGE_INTEGER LargeVal;
00054     LargeVal.QuadPart = 0;
00055     return LargeVal.QuadPart;
00056 }
00057 
00058 /* FUNCTIONS *****************************************************************/
00059 
00060 VOID
00061 NTAPI
00062 KiSetProcessorType(VOID)
00063 {
00064 }
00065 
00066 ULONG
00067 NTAPI
00068 KiGetCpuVendor(VOID)
00069 {
00070     return 0;
00071 }
00072 
00073 ULONG
00074 NTAPI
00075 KiGetFeatureBits(VOID)
00076 {
00077     ULONG FeatureBits = 0;
00078     /* Return the Feature Bits */
00079     return FeatureBits;
00080 }
00081 
00082 VOID
00083 NTAPI
00084 KiGetCacheInformation(VOID)
00085 {
00086 }
00087 
00088 VOID
00089 NTAPI
00090 KiSetCR0Bits(VOID)
00091 {
00092 }
00093 
00094 VOID
00095 NTAPI
00096 KiInitializeTSS2(IN PKTSS Tss,
00097                  IN PKGDTENTRY TssEntry OPTIONAL)
00098 {
00099 }
00100 
00101 VOID
00102 NTAPI
00103 KiInitializeTSS(IN PKTSS Tss)
00104 {
00105 }
00106 
00107 VOID
00108 FASTCALL
00109 Ki386InitializeTss(IN PKTSS Tss,
00110                    IN PKIDTENTRY Idt,
00111                    IN PKGDTENTRY Gdt)
00112 {
00113 }
00114 
00115 VOID
00116 NTAPI
00117 KeFlushCurrentTb(VOID)
00118 {
00119 }
00120 
00121 VOID
00122 NTAPI
00123 KiSaveProcessorControlState(OUT PKPROCESSOR_STATE ProcessorState)
00124 {
00125 }
00126 
00127 VOID
00128 NTAPI
00129 KiInitializeMachineType(VOID)
00130 {
00131 }
00132 
00133 ULONG_PTR
00134 NTAPI
00135 KiLoadFastSyscallMachineSpecificRegisters(IN ULONG_PTR Context)
00136 {
00137     return 0;
00138 }
00139 
00140 VOID
00141 NTAPI
00142 KiRestoreFastSyscallReturnState(VOID)
00143 {
00144 }
00145 
00146 ULONG_PTR
00147 NTAPI
00148 Ki386EnableDE(IN ULONG_PTR Context)
00149 {
00150     return 0;
00151 }
00152 
00153 ULONG_PTR
00154 NTAPI
00155 Ki386EnableFxsr(IN ULONG_PTR Context)
00156 {
00157     return 0;
00158 }
00159 
00160 ULONG_PTR
00161 NTAPI
00162 Ki386EnableXMMIExceptions(IN ULONG_PTR Context)
00163 {
00164     /* FIXME: Support this */
00165     DPRINT1("Your machine supports XMMI exceptions but ReactOS doesn't\n");
00166     return 0;
00167 }
00168 
00169 VOID
00170 NTAPI
00171 KiI386PentiumLockErrataFixup(VOID)
00172 {
00173     /* FIXME: Support this */
00174     DPRINT1("WARNING: Your machine has a CPU bug that ReactOS can't bypass!\n");
00175 }
00176 
00177 /* PUBLIC FUNCTIONS **********************************************************/
00178 
00179 /*
00180  * @implemented
00181  */
00182 NTSTATUS
00183 NTAPI
00184 KeSaveFloatingPointState(OUT PKFLOATING_SAVE Save)
00185 {
00186     return STATUS_SUCCESS;
00187 }
00188 
00189 /*
00190  * @implemented
00191  */
00192 NTSTATUS
00193 NTAPI
00194 KeRestoreFloatingPointState(IN PKFLOATING_SAVE Save)
00195 {
00196     return STATUS_SUCCESS;
00197 }
00198 
00199 /*
00200  * @implemented
00201  */
00202 ULONG
00203 NTAPI
00204 KeGetRecommendedSharedDataAlignment(VOID)
00205 {
00206     /* Return the global variable */
00207     return KeLargestCacheLine;
00208 }
00209 
00210 /*
00211  * @implemented
00212  */
00213 VOID
00214 NTAPI
00215 KeFlushEntireTb(IN BOOLEAN Invalid,
00216                 IN BOOLEAN AllProcessors)
00217 {
00218     KIRQL OldIrql;
00219 
00220     /* Raise the IRQL for the TB Flush */
00221     OldIrql = KeRaiseIrqlToSynchLevel();
00222 
00223 #ifdef CONFIG_SMP
00224     /* FIXME: Support IPI Flush */
00225 #error Not yet implemented!
00226 #endif
00227 
00228     /* Flush the TB for the Current CPU */
00229     //KeFlushCurrentTb();
00230 
00231     /* Return to Original IRQL */
00232     KeLowerIrql(OldIrql);
00233 }
00234 
00235 /*
00236  * @implemented
00237  */
00238 VOID
00239 NTAPI
00240 KeSetDmaIoCoherency(IN ULONG Coherency)
00241 {
00242     /* Save the coherency globally */
00243     KiDmaIoCoherency = Coherency;
00244 }
00245 
00246 /*
00247  * @implemented
00248  */
00249 KAFFINITY
00250 NTAPI
00251 KeQueryActiveProcessors(VOID)
00252 {
00253     PAGED_CODE();
00254 
00255     /* Simply return the number of active processors */
00256     return KeActiveProcessors;
00257 }
00258 
00259 /*
00260  * @implemented
00261  */
00262 VOID
00263 __cdecl
00264 KeSaveStateForHibernate(IN PKPROCESSOR_STATE State)
00265 {
00266     /* Capture the context */
00267     RtlCaptureContext(&State->ContextFrame);
00268 
00269     /* Capture the control state */
00270     KiSaveProcessorControlState(State);
00271 }

Generated on Sat May 26 2012 04:36:18 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.