[BOOTLIB]: Don't use __getcallerseflags() in Archx86IsCpuidSupported -- __readeflags...
authorAlex Ionescu <aionescu@gmail.com>
Mon, 6 Feb 2017 19:34:15 +0000 (19:34 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Mon, 6 Feb 2017 19:34:15 +0000 (19:34 +0000)
svn path=/trunk/; revision=73732

reactos/boot/environ/include/bl.h
reactos/boot/environ/lib/misc/util.c
reactos/boot/environ/lib/mm/i386/mmx86.c

index 7b0d365..517a280 100644 (file)
@@ -1562,6 +1562,11 @@ BlTimeQueryPerformanceCounter (
     _Out_opt_ PLARGE_INTEGER Frequency
     );
 
+ULONGLONG
+BlArchGetPerformanceCounter (
+    VOID
+    );
+
 /* RESOURCE LOCALE INTERNATIONALIZATION ROUTINES *****************************/
 
 NTSTATUS
@@ -1655,6 +1660,18 @@ BlStatusError (
 
 /* UTILITY ROUTINES **********************************************************/
 
+VOID
+BlArchCpuId (
+    _In_ ULONG Function,
+    _In_ ULONG SubFunction,
+    _Out_ INT* Result
+    );
+
+BOOLEAN
+BlArchIsCpuIdFunctionSupported (
+    _In_ ULONG Function
+    );
+
 VOID
 BlUtlUpdateProgress (
     _In_ ULONG Percentage,
index 9abe95d..7a2d24b 100644 (file)
@@ -776,3 +776,91 @@ BlUtlCheckSum (
 
     return PartialSum;
 }
+
+BOOLEAN
+Archx86IsCpuidSupported (
+    VOID
+    )
+{
+    ULONG CallerFlags, Flags;
+
+    /* Read the original flags, and add the CPUID bit */
+    CallerFlags = __readeflags() ^ 0x200000;
+    __writeeflags(CallerFlags);
+
+    /* Read our flags now */
+    Flags = __readeflags();
+
+    /* Check if the bit stuck */
+    return (((CallerFlags ^ Flags) >> 21) & 1) ^ 1;
+}
+
+BOOLEAN
+BlArchIsCpuIdFunctionSupported (
+    _In_ ULONG Function
+    )
+{
+    BOOLEAN Supported;
+    INT CpuInfo[4];
+
+    /* Check if the CPU supports this instruction */
+    Supported = Archx86IsCpuidSupported();
+    if (!Supported)
+    {
+        return FALSE;
+    }
+
+    /* Check if it's the extended function */
+    if (Function >= 0x80000000)
+    {
+        /* Check if extended functions are supported */
+        __cpuid(CpuInfo, 0x80000000);
+        if ((CpuInfo[0] & 0xFFFFFF00) != 0x80000000)
+        {
+            /* Nope */
+            return FALSE;
+        }
+    }
+    else
+    {
+        /* It's a regular function, get the maximum one supported */
+        __cpuid(CpuInfo, 0);
+    }
+
+    /* Check if our function is within bounds */
+    if (Function <= CpuInfo[0])
+    {
+        return TRUE;
+    }
+
+    /* Nope */
+    return FALSE;
+}
+
+ULONGLONG
+BlArchGetPerformanceCounter (
+    VOID
+    )
+{
+    INT CpuInfo[4];
+
+    /* Serialize with CPUID, if it exists */
+    if (Archx86IsCpuidSupported())
+    {
+        BlArchCpuId(0, 0, CpuInfo);
+    }
+
+    /* Read the TSC */
+    return __rdtsc();
+}
+
+VOID
+BlArchCpuId (
+    _In_ ULONG Function,
+    _In_ ULONG SubFunction,
+    _Out_ INT* Result
+    )
+{
+    /* Use the intrinsic */
+    __cpuidex(Result, Function, SubFunction);
+}
index e61aaaf..65ecc1c 100644 (file)
@@ -227,94 +227,6 @@ MmArchTranslateVirtualAddress (
     return Descriptor != NULL;
 }
 
-BOOLEAN
-Archx86IsCpuidSupported (
-    VOID
-    )
-{
-    ULONG CallerFlags, Flags;
-
-    /* Read the original flags, and add the CPUID bit */
-    CallerFlags = __getcallerseflags() ^ 0x200000;
-    __writeeflags(CallerFlags);
-
-    /* Read our flags now */
-    Flags = __readeflags();
-
-    /* Check if the bit stuck */
-    return (((CallerFlags ^ Flags) >> 21) & 1) ^ 1;
-}
-
-BOOLEAN
-BlArchIsCpuIdFunctionSupported (
-    _In_ ULONG Function
-    )
-{
-    BOOLEAN Supported;
-    INT CpuInfo[4];
-
-    /* Check if the CPU supports this instruction */
-    Supported = Archx86IsCpuidSupported();
-    if (!Supported)
-    {
-        return FALSE;
-    }
-
-    /* Check if it's the extended function */
-    if (Function >= 0x80000000)
-    {
-        /* Check if extended functions are supported */
-        __cpuid(CpuInfo, 0x80000000);
-        if ((CpuInfo[0] & 0xFFFFFF00) != 0x80000000)
-        {
-            /* Nope */
-            return FALSE;
-        }
-    }
-    else
-    {
-        /* It's a regular function, get the maximum one supported */
-        __cpuid(CpuInfo, 0);
-    }
-
-    /* Check if our function is within bounds */
-    if (Function <= CpuInfo[0])
-    {
-        return TRUE;
-    }
-
-    /* Nope */
-    return FALSE;
-}
-
-VOID
-BlArchCpuId (
-    _In_ ULONG Function,
-    _In_ ULONG SubFunction,
-    _Out_ INT* Result
-    )
-{
-    /* Use the intrinsic */
-    __cpuidex(Result, Function, SubFunction);
-}
-
-ULONGLONG
-BlArchGetPerformanceCounter (
-    VOID
-    )
-{
-    INT CpuInfo[4];
-
-    /* Serialize with CPUID, if it exists */
-    if (Archx86IsCpuidSupported())
-    {
-        BlArchCpuId(0, 0, CpuInfo);
-    }
-
-    /* Read the TSC */
-    return __rdtsc();
-}
-
 VOID
 MmDefpDestroySelfMap (
     VOID