1
0
Fork 0
mirror of https://github.com/anrieff/libcpuid synced 2024-11-20 23:01:51 +00:00

Remove all trailling spaces

It is annoying with some text editors
This commit is contained in:
Xorg 2020-05-09 17:34:07 +02:00
parent d317e1504f
commit 0b05f45e03
No known key found for this signature in database
GPG key ID: 1E55EE2EFF18BC1A
41 changed files with 3115 additions and 3115 deletions

View file

@ -2,7 +2,7 @@ libcpuid
======== ========
libcpuid provides CPU identification for the x86 (and x86_64). libcpuid provides CPU identification for the x86 (and x86_64).
For details about the programming API, you might want to For details about the programming API, you might want to
take a look at the project's website on sourceforge take a look at the project's website on sourceforge
(http://libcpuid.sourceforge.net/). There you'd find a short (http://libcpuid.sourceforge.net/). There you'd find a short
[tutorial](http://libcpuid.sf.net/documentation.html), as well [tutorial](http://libcpuid.sf.net/documentation.html), as well
@ -52,7 +52,7 @@ a good idea to run `make test`. If some test fails, and you're confident
that the test is wrong and needs fixing, run `make fix-tests`. that the test is wrong and needs fixing, run `make fix-tests`.
You can also add a new test (which is basically a file containing You can also add a new test (which is basically a file containing
the raw CPUID data and the expected decoded items) by using the raw CPUID data and the expected decoded items) by using
`tests/create_test.py`. The workflow there is as follows: `tests/create_test.py`. The workflow there is as follows:
1. Run "cpuid_tool" with no arguments. It will tell you that it 1. Run "cpuid_tool" with no arguments. It will tell you that it

View file

@ -1,127 +1,127 @@
#include <ntddk.h> #include <ntddk.h>
#define FILE_DEVICE_UNKNOWN 0x00000022 #define FILE_DEVICE_UNKNOWN 0x00000022
#define IOCTL_UNKNOWN_BASE FILE_DEVICE_UNKNOWN #define IOCTL_UNKNOWN_BASE FILE_DEVICE_UNKNOWN
#define IOCTL_PROCVIEW_RDMSR CTL_CODE(IOCTL_UNKNOWN_BASE, 0x0803, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) #define IOCTL_PROCVIEW_RDMSR CTL_CODE(IOCTL_UNKNOWN_BASE, 0x0803, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define FLAG_HANDLE_OPENED 1 #define FLAG_HANDLE_OPENED 1
void UnloadDriver(PDRIVER_OBJECT DriverObject); void UnloadDriver(PDRIVER_OBJECT DriverObject);
NTSTATUS DispatchCreateClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); NTSTATUS DispatchCreateClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
NTSTATUS DispatchIoctl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); NTSTATUS DispatchIoctl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath); NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath);
typedef struct _DEVICE_EXTENSION{ typedef struct _DEVICE_EXTENSION{
PDEVICE_OBJECT DeviceObject; PDEVICE_OBJECT DeviceObject;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION; } DEVICE_EXTENSION, *PDEVICE_EXTENSION;
PDEVICE_OBJECT g_pDeviceObject; PDEVICE_OBJECT g_pDeviceObject;
#pragma alloc_text(PAGE0DEF, DriverEntry) #pragma alloc_text(PAGE0DEF, DriverEntry)
// //
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath){ NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath){
NTSTATUS ntStatus; NTSTATUS ntStatus;
UNICODE_STRING uszDriverString; UNICODE_STRING uszDriverString;
UNICODE_STRING uszDeviceString; UNICODE_STRING uszDeviceString;
PDEVICE_OBJECT pDeviceObject; PDEVICE_OBJECT pDeviceObject;
PDEVICE_EXTENSION extension; PDEVICE_EXTENSION extension;
// Point uszDriverString at the driver name // Point uszDriverString at the driver name
RtlInitUnicodeString(&uszDriverString, L"\\Device\\TmpRdr"); RtlInitUnicodeString(&uszDriverString, L"\\Device\\TmpRdr");
// Create and initialize device object // Create and initialize device object
ntStatus = IoCreateDevice(DriverObject, sizeof(DEVICE_EXTENSION), &uszDriverString, FILE_DEVICE_UNKNOWN, 0, FALSE, &pDeviceObject); ntStatus = IoCreateDevice(DriverObject, sizeof(DEVICE_EXTENSION), &uszDriverString, FILE_DEVICE_UNKNOWN, 0, FALSE, &pDeviceObject);
if(ntStatus != STATUS_SUCCESS) if(ntStatus != STATUS_SUCCESS)
return ntStatus; return ntStatus;
// Assign extension variable // Assign extension variable
extension = pDeviceObject->DeviceExtension; extension = pDeviceObject->DeviceExtension;
// Point uszDeviceString at the device name // Point uszDeviceString at the device name
RtlInitUnicodeString(&uszDeviceString, L"\\DosDevices\\TmpRdr"); RtlInitUnicodeString(&uszDeviceString, L"\\DosDevices\\TmpRdr");
// Create symbolic link to the user-visible name // Create symbolic link to the user-visible name
ntStatus = IoCreateSymbolicLink(&uszDeviceString, &uszDriverString); ntStatus = IoCreateSymbolicLink(&uszDeviceString, &uszDriverString);
if(ntStatus != STATUS_SUCCESS){ if(ntStatus != STATUS_SUCCESS){
// Delete device object if not successful // Delete device object if not successful
IoDeleteDevice(pDeviceObject); IoDeleteDevice(pDeviceObject);
return ntStatus; return ntStatus;
} }
// Assign global pointer to the device object for use by the callback functions // Assign global pointer to the device object for use by the callback functions
g_pDeviceObject = pDeviceObject; g_pDeviceObject = pDeviceObject;
// Load structure to point to IRP handlers // Load structure to point to IRP handlers
DriverObject->DriverUnload = UnloadDriver; DriverObject->DriverUnload = UnloadDriver;
DriverObject->MajorFunction[IRP_MJ_CREATE] = DispatchCreateClose; DriverObject->MajorFunction[IRP_MJ_CREATE] = DispatchCreateClose;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = DispatchCreateClose; DriverObject->MajorFunction[IRP_MJ_CLOSE] = DispatchCreateClose;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DispatchIoctl; DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DispatchIoctl;
// Return success // Return success
return ntStatus; return ntStatus;
} }
// //
NTSTATUS DispatchCreateClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp){ NTSTATUS DispatchCreateClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp){
PDEVICE_EXTENSION extension = DeviceObject->DeviceExtension; PDEVICE_EXTENSION extension = DeviceObject->DeviceExtension;
Irp->IoStatus.Status = STATUS_SUCCESS; Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = 0; Irp->IoStatus.Information = 0;
IoCompleteRequest(Irp, IO_NO_INCREMENT); IoCompleteRequest(Irp, IO_NO_INCREMENT);
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
// //
NTSTATUS DispatchIoctl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp){ NTSTATUS DispatchIoctl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp){
NTSTATUS ntStatus = STATUS_UNSUCCESSFUL; NTSTATUS ntStatus = STATUS_UNSUCCESSFUL;
PIO_STACK_LOCATION irpStack = IoGetCurrentIrpStackLocation(Irp); PIO_STACK_LOCATION irpStack = IoGetCurrentIrpStackLocation(Irp);
PDEVICE_EXTENSION extension = DeviceObject->DeviceExtension; PDEVICE_EXTENSION extension = DeviceObject->DeviceExtension;
__int64 *p__int64; __int64 *p__int64;
int iMSRregister; int iMSRregister;
switch(irpStack->Parameters.DeviceIoControl.IoControlCode){ switch(irpStack->Parameters.DeviceIoControl.IoControlCode){
case IOCTL_PROCVIEW_RDMSR: case IOCTL_PROCVIEW_RDMSR:
if(irpStack->Parameters.DeviceIoControl.OutputBufferLength >= sizeof(__int64)){ if(irpStack->Parameters.DeviceIoControl.OutputBufferLength >= sizeof(__int64)){
if(irpStack->Parameters.DeviceIoControl.InputBufferLength == sizeof(int)) if(irpStack->Parameters.DeviceIoControl.InputBufferLength == sizeof(int))
iMSRregister = *((int *)Irp->AssociatedIrp.SystemBuffer); iMSRregister = *((int *)Irp->AssociatedIrp.SystemBuffer);
else else
iMSRregister = 0x19c; iMSRregister = 0x19c;
p__int64 = Irp->AssociatedIrp.SystemBuffer; p__int64 = Irp->AssociatedIrp.SystemBuffer;
*p__int64 = __readmsr(iMSRregister); *p__int64 = __readmsr(iMSRregister);
ntStatus = STATUS_SUCCESS; ntStatus = STATUS_SUCCESS;
Irp->IoStatus.Information = sizeof(__int64); Irp->IoStatus.Information = sizeof(__int64);
IoCompleteRequest(Irp, IO_NO_INCREMENT); IoCompleteRequest(Irp, IO_NO_INCREMENT);
return ntStatus; return ntStatus;
} }
break; break;
default: default:
break; break;
} }
Irp->IoStatus.Status = ntStatus; Irp->IoStatus.Status = ntStatus;
if(ntStatus == STATUS_SUCCESS) if(ntStatus == STATUS_SUCCESS)
Irp->IoStatus.Information = irpStack->Parameters.DeviceIoControl.OutputBufferLength; Irp->IoStatus.Information = irpStack->Parameters.DeviceIoControl.OutputBufferLength;
else else
Irp->IoStatus.Information = 0; Irp->IoStatus.Information = 0;
IoCompleteRequest(Irp, IO_NO_INCREMENT); IoCompleteRequest(Irp, IO_NO_INCREMENT);
return ntStatus; return ntStatus;
} }
// //
void UnloadDriver(IN PDRIVER_OBJECT DriverObject){ void UnloadDriver(IN PDRIVER_OBJECT DriverObject){
UNICODE_STRING uszDeviceString; UNICODE_STRING uszDeviceString;
IoDeleteDevice(DriverObject->DeviceObject); IoDeleteDevice(DriverObject->DeviceObject);
RtlInitUnicodeString(&uszDeviceString, L"\\DosDevices\\TmpRdr"); RtlInitUnicodeString(&uszDeviceString, L"\\DosDevices\\TmpRdr");
IoDeleteSymbolicLink(&uszDeviceString); IoDeleteSymbolicLink(&uszDeviceString);
} }

View file

@ -1,272 +1,272 @@
<?xml version="1.0" encoding="windows-1251"?> <?xml version="1.0" encoding="windows-1251"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="8,00" Version="8,00"
Name="TmpRdr" Name="TmpRdr"
ProjectGUID="{C036F0C0-6A2C-4F27-9B37-E1337920BAB6}" ProjectGUID="{C036F0C0-6A2C-4F27-9B37-E1337920BAB6}"
RootNamespace="ProcObsrv" RootNamespace="ProcObsrv"
> >
<Platforms> <Platforms>
<Platform <Platform
Name="Win32" Name="Win32"
/> />
</Platforms> </Platforms>
<ToolFiles> <ToolFiles>
</ToolFiles> </ToolFiles>
<Configurations> <Configurations>
<Configuration <Configuration
Name="Release|Win32" Name="Release|Win32"
OutputDirectory=".\Release" OutputDirectory=".\Release"
IntermediateDirectory=".\Release" IntermediateDirectory=".\Release"
ConfigurationType="2" ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0" UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false" ATLMinimizesCRunTimeLibraryUsage="false"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG" PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true" MkTypLibCompatible="true"
SuppressStartupBanner="true" SuppressStartupBanner="true"
TargetEnvironment="1" TargetEnvironment="1"
TypeLibraryName=".\Release/ProcObsrv.tlb" TypeLibraryName=".\Release/ProcObsrv.tlb"
HeaderFileName="" HeaderFileName=""
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="3" Optimization="3"
EnableIntrinsicFunctions="true" EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
WholeProgramOptimization="true" WholeProgramOptimization="true"
AdditionalIncludeDirectories="C:\WINDDK\2600\inc\ddk\wxp;C:\WINDDK\2600\inc\wxp" AdditionalIncludeDirectories="C:\WINDDK\2600\inc\ddk\wxp;C:\WINDDK\2600\inc\wxp"
PreprocessorDefinitions="_X86_;i386;STD_CALL;CONDITION_HANDLING;WIN32_LEAN_AND_MEAN;NT_UP;RDRDBG;SRVDBG;DBG;_IDWBUILD;UNICODE" PreprocessorDefinitions="_X86_;i386;STD_CALL;CONDITION_HANDLING;WIN32_LEAN_AND_MEAN;NT_UP;RDRDBG;SRVDBG;DBG;_IDWBUILD;UNICODE"
StringPooling="true" StringPooling="true"
ExceptionHandling="0" ExceptionHandling="0"
BasicRuntimeChecks="0" BasicRuntimeChecks="0"
RuntimeLibrary="0" RuntimeLibrary="0"
BufferSecurityCheck="false" BufferSecurityCheck="false"
EnableFunctionLevelLinking="true" EnableFunctionLevelLinking="true"
PrecompiledHeaderFile=".\Release/$(ProjectName).pch" PrecompiledHeaderFile=".\Release/$(ProjectName).pch"
AssemblerListingLocation=".\Release/" AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/" ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/" ProgramDataBaseFileName=".\Release/"
BrowseInformation="0" BrowseInformation="0"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="true" SuppressStartupBanner="true"
DebugInformationFormat="0" DebugInformationFormat="0"
CallingConvention="2" CallingConvention="2"
CompileAs="1" CompileAs="1"
UndefinePreprocessorDefinitions="NT_INST" UndefinePreprocessorDefinitions="NT_INST"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
Culture="1033" Culture="1033"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalOptions="/SUBSYSTEM:native /LIBPATH:&quot;C:\WINDDK\2600\lib\wxp\i386&quot; /DRIVER" AdditionalOptions="/SUBSYSTEM:native /LIBPATH:&quot;C:\WINDDK\2600\lib\wxp\i386&quot; /DRIVER"
AdditionalDependencies="ntoskrnl.lib hal.lib" AdditionalDependencies="ntoskrnl.lib hal.lib"
OutputFile="..\$(ProjectName).sys" OutputFile="..\$(ProjectName).sys"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
GenerateManifest="false" GenerateManifest="false"
IgnoreAllDefaultLibraries="true" IgnoreAllDefaultLibraries="true"
GenerateDebugInformation="false" GenerateDebugInformation="false"
ProgramDatabaseFile=".\Debug/$(ProjectName).pdb" ProgramDatabaseFile=".\Debug/$(ProjectName).pdb"
SubSystem="3" SubSystem="3"
LinkTimeCodeGeneration="1" LinkTimeCodeGeneration="1"
EntryPointSymbol="DriverEntry@8" EntryPointSymbol="DriverEntry@8"
BaseAddress="0x10000" BaseAddress="0x10000"
ImportLibrary=".\Release/$(ProjectName).lib" ImportLibrary=".\Release/$(ProjectName).lib"
TargetMachine="1" TargetMachine="1"
AllowIsolation="true" AllowIsolation="true"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
EmbedManifest="false" EmbedManifest="false"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
SuppressStartupBanner="true" SuppressStartupBanner="true"
OutputFile=".\Release/ProcObsrv.bsc" OutputFile=".\Release/ProcObsrv.bsc"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCWebDeploymentTool" Name="VCWebDeploymentTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Debug|Win32" Name="Debug|Win32"
OutputDirectory=".\Debug" OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug" IntermediateDirectory=".\Debug"
ConfigurationType="2" ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0" UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false" ATLMinimizesCRunTimeLibraryUsage="false"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG" PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true" MkTypLibCompatible="true"
SuppressStartupBanner="true" SuppressStartupBanner="true"
TargetEnvironment="1" TargetEnvironment="1"
TypeLibraryName=".\Debug/ProcObsrv.tlb" TypeLibraryName=".\Debug/ProcObsrv.tlb"
HeaderFileName="" HeaderFileName=""
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="4" Optimization="4"
EnableIntrinsicFunctions="true" EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="0" FavorSizeOrSpeed="0"
OmitFramePointers="false" OmitFramePointers="false"
WholeProgramOptimization="false" WholeProgramOptimization="false"
AdditionalIncludeDirectories="C:\WINDDK\2600\inc\ddk\wxp;C:\WINDDK\2600\inc\wxp" AdditionalIncludeDirectories="C:\WINDDK\2600\inc\ddk\wxp;C:\WINDDK\2600\inc\wxp"
PreprocessorDefinitions="_DEBUG;_X86_;i386;STD_CALL;CONDITION_HANDLING;WIN32_LEAN_AND_MEAN;NT_UP;RDRDBG;SRVDBG;DBG;_IDWBUILD" PreprocessorDefinitions="_DEBUG;_X86_;i386;STD_CALL;CONDITION_HANDLING;WIN32_LEAN_AND_MEAN;NT_UP;RDRDBG;SRVDBG;DBG;_IDWBUILD"
StringPooling="true" StringPooling="true"
RuntimeLibrary="0" RuntimeLibrary="0"
EnableFunctionLevelLinking="true" EnableFunctionLevelLinking="true"
PrecompiledHeaderFile=".\Debug/$(ProjectName).pch" PrecompiledHeaderFile=".\Debug/$(ProjectName).pch"
AssemblerListingLocation=".\Debug/" AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/" ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/" ProgramDataBaseFileName=".\Debug/"
BrowseInformation="1" BrowseInformation="1"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="true" SuppressStartupBanner="true"
DebugInformationFormat="1" DebugInformationFormat="1"
CallingConvention="2" CallingConvention="2"
UndefinePreprocessorDefinitions="NT_INST" UndefinePreprocessorDefinitions="NT_INST"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG" PreprocessorDefinitions="_DEBUG"
Culture="1033" Culture="1033"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalOptions="/SUBSYSTEM:native /LIBPATH:&quot;C:\WINDDK\2600\lib\wxp\i386&quot; /DRIVER" AdditionalOptions="/SUBSYSTEM:native /LIBPATH:&quot;C:\WINDDK\2600\lib\wxp\i386&quot; /DRIVER"
AdditionalDependencies="ntoskrnl.lib hal.lib" AdditionalDependencies="ntoskrnl.lib hal.lib"
OutputFile="..\$(ProjectName).sys" OutputFile="..\$(ProjectName).sys"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
GenerateManifest="false" GenerateManifest="false"
IgnoreAllDefaultLibraries="true" IgnoreAllDefaultLibraries="true"
GenerateDebugInformation="true" GenerateDebugInformation="true"
ProgramDatabaseFile=".\Debug/$(ProjectName).pdb" ProgramDatabaseFile=".\Debug/$(ProjectName).pdb"
EntryPointSymbol="DriverEntry@8" EntryPointSymbol="DriverEntry@8"
BaseAddress="0x10000" BaseAddress="0x10000"
ImportLibrary=".\Debug/$(ProjectName).lib" ImportLibrary=".\Debug/$(ProjectName).lib"
TargetMachine="1" TargetMachine="1"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
SuppressStartupBanner="true" SuppressStartupBanner="true"
OutputFile=".\Debug/$(ProjectName).bsc" OutputFile=".\Debug/$(ProjectName).bsc"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCWebDeploymentTool" Name="VCWebDeploymentTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
</Configurations> </Configurations>
<References> <References>
</References> </References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
> >
<File <File
RelativePath=".\TmpRdr.c" RelativePath=".\TmpRdr.c"
> >
</File> </File>
<File <File
RelativePath=".\tmprdr.rc" RelativePath=".\tmprdr.rc"
> >
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Header Files" Name="Header Files"
Filter="h;hpp;hxx;hm;inl" Filter="h;hpp;hxx;hm;inl"
> >
<File <File
RelativePath=".\resource.h" RelativePath=".\resource.h"
> >
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Resource Files" Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
> >
</Filter> </Filter>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>
</VisualStudioProject> </VisualStudioProject>

View file

@ -1,14 +1,14 @@
//{{NO_DEPENDENCIES}} //{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file. // Microsoft Visual C++ generated include file.
// Used by tmprdr.rc // Used by tmprdr.rc
// Next default values for new objects // Next default values for new objects
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 101 #define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001 #define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101 #define _APS_NEXT_SYMED_VALUE 101
#endif #endif
#endif #endif

View file

@ -1,115 +1,115 @@
// Microsoft Visual C++ generated resource script. // Microsoft Visual C++ generated resource script.
// //
#include "resource.h" #include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS #define APSTUDIO_READONLY_SYMBOLS
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// Generated from the TEXTINCLUDE 2 resource. // Generated from the TEXTINCLUDE 2 resource.
// //
#include "windows.h" #include "windows.h"
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS #undef APSTUDIO_READONLY_SYMBOLS
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// Bulgarian resources // Bulgarian resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_BGR) #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_BGR)
#ifdef _WIN32 #ifdef _WIN32
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
#pragma code_page(1251) #pragma code_page(1251)
#endif //_WIN32 #endif //_WIN32
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// TEXTINCLUDE // TEXTINCLUDE
// //
1 TEXTINCLUDE 1 TEXTINCLUDE
BEGIN BEGIN
"resource.h\0" "resource.h\0"
END END
2 TEXTINCLUDE 2 TEXTINCLUDE
BEGIN BEGIN
"#include ""windows.h""\r\n" "#include ""windows.h""\r\n"
"\0" "\0"
END END
3 TEXTINCLUDE 3 TEXTINCLUDE
BEGIN BEGIN
"\r\n" "\r\n"
"\0" "\0"
END END
#endif // APSTUDIO_INVOKED #endif // APSTUDIO_INVOKED
#endif // Bulgarian resources #endif // Bulgarian resources
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources // English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32 #ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252) #pragma code_page(1252)
#endif //_WIN32 #endif //_WIN32
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// Version // Version
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1 FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1 PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x17L FILEFLAGSMASK 0x17L
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
#else #else
FILEFLAGS 0x0L FILEFLAGS 0x0L
#endif #endif
FILEOS 0x40004L FILEOS 0x40004L
FILETYPE 0x3L FILETYPE 0x3L
FILESUBTYPE 0x0L FILESUBTYPE 0x0L
BEGIN BEGIN
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
BEGIN BEGIN
BLOCK "040904b0" BLOCK "040904b0"
BEGIN BEGIN
VALUE "Comments", "MSR reader 32-bit kernel driver" VALUE "Comments", "MSR reader 32-bit kernel driver"
VALUE "CompanyName", "Iron Steeds Inc." VALUE "CompanyName", "Iron Steeds Inc."
VALUE "FileDescription", "TmpRdr 32-bit Kernel Module" VALUE "FileDescription", "TmpRdr 32-bit Kernel Module"
VALUE "FileVersion", "1, 0, 0, 1" VALUE "FileVersion", "1, 0, 0, 1"
VALUE "InternalName", "TmpRdr" VALUE "InternalName", "TmpRdr"
VALUE "LegalCopyright", "Nick Gabarev '2009" VALUE "LegalCopyright", "Nick Gabarev '2009"
VALUE "OriginalFilename", "TmpRdr.sys" VALUE "OriginalFilename", "TmpRdr.sys"
VALUE "ProductName", "Core 2 Temperature Reader" VALUE "ProductName", "Core 2 Temperature Reader"
VALUE "ProductVersion", "1, 0, 0, 1" VALUE "ProductVersion", "1, 0, 0, 1"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"
BEGIN BEGIN
VALUE "Translation", 0x409, 1200 VALUE "Translation", 0x409, 1200
END END
END END
#endif // English (U.S.) resources #endif // English (U.S.) resources
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED #ifndef APSTUDIO_INVOKED
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// Generated from the TEXTINCLUDE 3 resource. // Generated from the TEXTINCLUDE 3 resource.
// //
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED #endif // not APSTUDIO_INVOKED

Binary file not shown.

Binary file not shown.

View file

@ -1,12 +1,12 @@
# Makefile for cpuid_tool, MSVC, for AMD64 # Makefile for cpuid_tool, MSVC, for AMD64
OPTFLAGS = OPTFLAGS =
LINKFLAGS = /MT LINKFLAGS = /MT
all: cpuid_tool.exe all: cpuid_tool.exe
cpuid_tool.exe: cpuid_tool.c ..\libcpuid\libcpuid.lib cpuid_tool.exe: cpuid_tool.c ..\libcpuid\libcpuid.lib
cl /TC $(OPTFLAGS) $(LINKFLAGS) /I ..\libcpuid cpuid_tool.c /link ..\libcpuid\libcpuid.lib advapi32.lib cl /TC $(OPTFLAGS) $(LINKFLAGS) /I ..\libcpuid cpuid_tool.c /link ..\libcpuid\libcpuid.lib advapi32.lib
clean: clean:
del cpuid_tool.obj cpuid_tool.exe del cpuid_tool.obj cpuid_tool.exe

View file

@ -174,7 +174,7 @@ static void usage(void)
printf(" --version - print library version\n"); printf(" --version - print library version\n");
printf("\n"); printf("\n");
printf("Query switches (generate 1 line of output per switch; in order of appearance):"); printf("Query switches (generate 1 line of output per switch; in order of appearance):");
line_fill = 80; line_fill = 80;
for (i = 0; i < sz_match; i++) { for (i = 0; i < sz_match; i++) {
l = (int) strlen(matchtable[i].synopsis); l = (int) strlen(matchtable[i].synopsis);
@ -305,7 +305,7 @@ static int parse_cmdline(int argc, char** argv)
recog = 1; recog = 1;
break; break;
} }
if (!recog) { if (!recog) {
fprintf(stderr, "Unrecognized option: `%s'\n\n", arg); fprintf(stderr, "Unrecognized option: `%s'\n\n", arg);
fprintf(stderr, "Use -h to get a list of supported options\n"); fprintf(stderr, "Use -h to get a list of supported options\n");
@ -323,7 +323,7 @@ static void close_out(void)
static int check_need_raw_data(void) static int check_need_raw_data(void)
{ {
int i, j; int i, j;
if (need_output || need_report || need_identify) return 1; if (need_output || need_report || need_identify) return 1;
for (i = 0; i < num_requests; i++) { for (i = 0; i < num_requests; i++) {
for (j = 0; j < sz_match; j++) for (j = 0; j < sz_match; j++)
@ -476,7 +476,7 @@ static void print_info(output_data_switch query, struct cpu_raw_data_t* raw,
} }
case NEED_SSE_UNIT_SIZE: case NEED_SSE_UNIT_SIZE:
{ {
fprintf(fout, "%d (%s)\n", data->sse_size, fprintf(fout, "%d (%s)\n", data->sse_size,
data->detection_hints[CPU_HINT_SSE_SIZE_AUTH] ? "authoritative" : "non-authoritative"); data->detection_hints[CPU_HINT_SSE_SIZE_AUTH] ? "authoritative" : "non-authoritative");
break; break;
} }
@ -546,7 +546,7 @@ int main(int argc, char** argv)
/* In quiet mode, disable libcpuid warning messages: */ /* In quiet mode, disable libcpuid warning messages: */
if (need_quiet) if (need_quiet)
cpuid_set_warn_function(NULL); cpuid_set_warn_function(NULL);
cpuid_set_verbosiness_level(verbose_level); cpuid_set_verbosiness_level(verbose_level);
/* Redirect output, if necessary: */ /* Redirect output, if necessary: */
@ -561,11 +561,11 @@ int main(int argc, char** argv)
} else { } else {
fout = stdout; fout = stdout;
} }
/* If requested, print library version: */ /* If requested, print library version: */
if (need_version) if (need_version)
fprintf(fout, "%s\n", cpuid_lib_version()); fprintf(fout, "%s\n", cpuid_lib_version());
if (need_input) { if (need_input) {
/* We have a request to input raw CPUID data from file: */ /* We have a request to input raw CPUID data from file: */
if (!strcmp(raw_data_file, "-")) if (!strcmp(raw_data_file, "-"))
@ -599,7 +599,7 @@ int main(int argc, char** argv)
} }
} }
} }
/* Need to dump raw CPUID data to file: */ /* Need to dump raw CPUID data to file: */
if (need_output) { if (need_output) {
if (verbose_level >= 1) if (verbose_level >= 1)
@ -635,7 +635,7 @@ int main(int argc, char** argv)
*/ */
if (cpu_identify(&raw, &data) < 0) if (cpu_identify(&raw, &data) < 0)
fprintf(fout, "Error identifying the CPU: %s\n", cpuid_error()); fprintf(fout, "Error identifying the CPU: %s\n", cpuid_error());
/* OK, now write what we have in `data'...: */ /* OK, now write what we have in `data'...: */
fprintf(fout, "CPU Info:\n------------------\n"); fprintf(fout, "CPU Info:\n------------------\n");
fprintf(fout, " vendor_str : `%s'\n", data.vendor_str); fprintf(fout, " vendor_str : `%s'\n", data.vendor_str);
@ -673,7 +673,7 @@ int main(int argc, char** argv)
if (data.flags[i]) if (data.flags[i])
fprintf(fout, " %s", cpu_feature_str(i)); fprintf(fout, " %s", cpu_feature_str(i));
fprintf(fout, "\n"); fprintf(fout, "\n");
/* Is CPU clock info requested? */ /* Is CPU clock info requested? */
if (need_clockreport) { if (need_clockreport) {
if (need_timed_clockreport) { if (need_timed_clockreport) {
@ -719,6 +719,6 @@ int main(int argc, char** argv)
if (need_sgx) { if (need_sgx) {
print_sgx_data(&raw, &data); print_sgx_data(&raw, &data);
} }
return 0; return 0;
} }

View file

@ -1,100 +1,100 @@
# Microsoft Developer Studio Project File - Name="cpuid_tool" - Package Owner=<4> # Microsoft Developer Studio Project File - Name="cpuid_tool" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00 # Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT ** # ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103 # TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=cpuid_tool - Win32 Debug CFG=cpuid_tool - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run !MESSAGE use the Export Makefile command and run
!MESSAGE !MESSAGE
!MESSAGE NMAKE /f "cpuid_tool.mak". !MESSAGE NMAKE /f "cpuid_tool.mak".
!MESSAGE !MESSAGE
!MESSAGE You can specify a configuration when running NMAKE !MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE !MESSAGE
!MESSAGE NMAKE /f "cpuid_tool.mak" CFG="cpuid_tool - Win32 Debug" !MESSAGE NMAKE /f "cpuid_tool.mak" CFG="cpuid_tool - Win32 Debug"
!MESSAGE !MESSAGE
!MESSAGE Possible choices for configuration are: !MESSAGE Possible choices for configuration are:
!MESSAGE !MESSAGE
!MESSAGE "cpuid_tool - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "cpuid_tool - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "cpuid_tool - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "cpuid_tool - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE !MESSAGE
# Begin Project # Begin Project
# PROP AllowPerConfigDependencies 0 # PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName "" # PROP Scc_ProjName ""
# PROP Scc_LocalPath "" # PROP Scc_LocalPath ""
CPP=cl.exe CPP=cl.exe
RSC=rc.exe RSC=rc.exe
!IF "$(CFG)" == "cpuid_tool - Win32 Release" !IF "$(CFG)" == "cpuid_tool - Win32 Release"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0 # PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release" # PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release" # PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 0 # PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release" # PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release" # PROP Intermediate_Dir "Release"
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "../libcpuid" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "../libcpuid" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "cpuid_tool - Win32 Debug" !ELSEIF "$(CFG)" == "cpuid_tool - Win32 Debug"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1 # PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug" # PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug" # PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 1 # PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug" # PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug" # PROP Intermediate_Dir "Debug"
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../libcpuid" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../libcpuid" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF !ENDIF
# Begin Target # Begin Target
# Name "cpuid_tool - Win32 Release" # Name "cpuid_tool - Win32 Release"
# Name "cpuid_tool - Win32 Debug" # Name "cpuid_tool - Win32 Debug"
# Begin Group "Source Files" # Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File # Begin Source File
SOURCE=.\cpuid_tool.c SOURCE=.\cpuid_tool.c
# End Source File # End Source File
# End Group # End Group
# Begin Group "Header Files" # Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl" # PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group # End Group
# Begin Group "Resource Files" # Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group # End Group
# End Target # End Target
# End Project # End Project

View file

@ -1,249 +1,249 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64"> <ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="ReleaseDLL|Win32"> <ProjectConfiguration Include="ReleaseDLL|Win32">
<Configuration>ReleaseDLL</Configuration> <Configuration>ReleaseDLL</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="ReleaseDLL|x64"> <ProjectConfiguration Include="ReleaseDLL|x64">
<Configuration>ReleaseDLL</Configuration> <Configuration>ReleaseDLL</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|x64"> <ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectName>cpuid_tool</ProjectName> <ProjectName>cpuid_tool</ProjectName>
<ProjectGuid>{854A36FB-EA23-4165-9110-A55EB97C6377}</ProjectGuid> <ProjectGuid>{854A36FB-EA23-4165-9110-A55EB97C6377}</ProjectGuid>
<RootNamespace>cpuid_tool</RootNamespace> <RootNamespace>cpuid_tool</RootNamespace>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>NotSet</CharacterSet> <CharacterSet>NotSet</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>NotSet</CharacterSet> <CharacterSet>NotSet</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>NotSet</CharacterSet> <CharacterSet>NotSet</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>NotSet</CharacterSet> <CharacterSet>NotSet</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>NotSet</CharacterSet> <CharacterSet>NotSet</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>NotSet</CharacterSet> <CharacterSet>NotSet</CharacterSet>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup> <PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x$(PlatformArchitecture)\$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x$(PlatformArchitecture)\$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x$(PlatformArchitecture)\$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x$(PlatformArchitecture)\$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental> <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental> <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x$(PlatformArchitecture)\$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x$(PlatformArchitecture)\$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">x$(PlatformArchitecture)\$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">x$(PlatformArchitecture)\$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x$(PlatformArchitecture)\$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x$(PlatformArchitecture)\$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">x$(PlatformArchitecture)\$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">x$(PlatformArchitecture)\$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">false</LinkIncremental> <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental> <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">false</LinkIncremental> <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">false</LinkIncremental>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../libcpuid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>../libcpuid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild> <MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat> <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs> <CompileAs>CompileAsC</CompileAs>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>libcpuid.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>libcpuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>../libcpuid/x$(PlatformArchitecture)/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>../libcpuid/x$(PlatformArchitecture)/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../libcpuid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>../libcpuid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs> <CompileAs>CompileAsC</CompileAs>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>libcpuid.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>libcpuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>../libcpuid/x$(PlatformArchitecture)/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>../libcpuid/x$(PlatformArchitecture)/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>../libcpuid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>../libcpuid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs> <CompileAs>CompileAsC</CompileAs>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>libcpuid.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>libcpuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>../libcpuid/x$(PlatformArchitecture)/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>../libcpuid/x$(PlatformArchitecture)/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>../libcpuid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>../libcpuid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs> <CompileAs>CompileAsC</CompileAs>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>libcpuid.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>libcpuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>../libcpuid/x$(PlatformArchitecture)/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>../libcpuid/x$(PlatformArchitecture)/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>../libcpuid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>../libcpuid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs> <CompileAs>CompileAsC</CompileAs>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>libcpuid.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>libcpuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>../libcpuid/x$(PlatformArchitecture)/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>../libcpuid/x$(PlatformArchitecture)/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>../libcpuid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>../libcpuid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs> <CompileAs>CompileAsC</CompileAs>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>libcpuid.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>libcpuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>../libcpuid/x$(PlatformArchitecture)/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>../libcpuid/x$(PlatformArchitecture)/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="cpuid_tool.c" /> <ClCompile Include="cpuid_tool.c" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\libcpuid\libcpuid_vc10.vcxproj"> <ProjectReference Include="..\libcpuid\libcpuid_vc10.vcxproj">
<Project>{92bdba37-96e3-4d85-b762-185e4407bb49}</Project> <Project>{92bdba37-96e3-4d85-b762-185e4407bb49}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly> <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>

View file

@ -1,22 +1,22 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<Filter Include="Source Files"> <Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter> </Filter>
<Filter Include="Header Files"> <Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter> </Filter>
<Filter Include="Resource Files"> <Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions> <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="cpuid_tool.c"> <ClCompile Include="cpuid_tool.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
</Project> </Project>

View file

@ -1,190 +1,190 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.10" Version="7.10"
Name="cpuid_tool" Name="cpuid_tool"
ProjectGUID="{DD903FEE-4A59-4307-8DE2-0F777DC21FFE}" ProjectGUID="{DD903FEE-4A59-4307-8DE2-0F777DC21FFE}"
Keyword="Win32Proj"> Keyword="Win32Proj">
<Platforms> <Platforms>
<Platform <Platform
Name="Win32"/> Name="Win32"/>
</Platforms> </Platforms>
<Configurations> <Configurations>
<Configuration <Configuration
Name="Debug|Win32" Name="Debug|Win32"
OutputDirectory="Debug" OutputDirectory="Debug"
IntermediateDirectory="Debug" IntermediateDirectory="Debug"
ConfigurationType="1" ConfigurationType="1"
CharacterSet="2"> CharacterSet="2">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="../libcpuid" AdditionalIncludeDirectories="../libcpuid"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="TRUE" MinimalRebuild="TRUE"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="3" RuntimeLibrary="3"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
WarningLevel="3" WarningLevel="3"
Detect64BitPortabilityProblems="TRUE" Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4" DebugInformationFormat="4"
CompileAs="1"/> CompileAs="1"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="libcpuid.lib" AdditionalDependencies="libcpuid.lib"
OutputFile="$(OutDir)/cpuid_tool.exe" OutputFile="$(OutDir)/cpuid_tool.exe"
LinkIncremental="2" LinkIncremental="2"
AdditionalLibraryDirectories="../libcpuid/debug" AdditionalLibraryDirectories="../libcpuid/debug"
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/cpuid_tool.pdb" ProgramDatabaseFile="$(OutDir)/cpuid_tool.pdb"
SubSystem="1" SubSystem="1"
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release|Win32" Name="Release|Win32"
OutputDirectory="Release" OutputDirectory="Release"
IntermediateDirectory="Release" IntermediateDirectory="Release"
ConfigurationType="1" ConfigurationType="1"
CharacterSet="2"> CharacterSet="2">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../libcpuid" AdditionalIncludeDirectories="../libcpuid"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2" RuntimeLibrary="2"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
WarningLevel="3" WarningLevel="3"
Detect64BitPortabilityProblems="TRUE" Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="1"/> CompileAs="1"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="libcpuid.lib" AdditionalDependencies="libcpuid.lib"
OutputFile="$(OutDir)/cpuid_tool.exe" OutputFile="$(OutDir)/cpuid_tool.exe"
LinkIncremental="1" LinkIncremental="1"
AdditionalLibraryDirectories="../libcpuid/release" AdditionalLibraryDirectories="../libcpuid/release"
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
SubSystem="1" SubSystem="1"
OptimizeReferences="2" OptimizeReferences="2"
EnableCOMDATFolding="2" EnableCOMDATFolding="2"
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release DLL|Win32" Name="Release DLL|Win32"
OutputDirectory="$(ConfigurationName)" OutputDirectory="$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)" IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1" ConfigurationType="1"
CharacterSet="2"> CharacterSet="2">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../libcpuid" AdditionalIncludeDirectories="../libcpuid"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2" RuntimeLibrary="2"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
WarningLevel="3" WarningLevel="3"
Detect64BitPortabilityProblems="TRUE" Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="1"/> CompileAs="1"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="libcpuid.lib" AdditionalDependencies="libcpuid.lib"
OutputFile="$(OutDir)/cpuid_tool.exe" OutputFile="$(OutDir)/cpuid_tool.exe"
LinkIncremental="1" LinkIncremental="1"
AdditionalLibraryDirectories="../libcpuid/release dll" AdditionalLibraryDirectories="../libcpuid/release dll"
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
SubSystem="1" SubSystem="1"
OptimizeReferences="2" OptimizeReferences="2"
EnableCOMDATFolding="2" EnableCOMDATFolding="2"
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
</Configurations> </Configurations>
<References> <References>
</References> </References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"> UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
<File <File
RelativePath=".\cpuid_tool.c"> RelativePath=".\cpuid_tool.c">
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Header Files" Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd" Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"> UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
</Filter> </Filter>
<Filter <Filter
Name="Resource Files" Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"> UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
</Filter> </Filter>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>
</VisualStudioProject> </VisualStudioProject>

2
debian/changelog vendored
View file

@ -38,7 +38,7 @@ libcpuid (0.3.0) unstable; urgency=low
* Support up to 8 subleaf entries for CPUID leaf 04 and detection * Support up to 8 subleaf entries for CPUID leaf 04 and detection
of L4 cache. of L4 cache.
* MSR functions supported on FreeBSD. * MSR functions supported on FreeBSD.
* INFO_VOLTAGE request supported by cpu_msrinfo(). * INFO_VOLTAGE request supported by cpu_msrinfo().
-- eloaders <eloaders@linux.pl> Mon, 22 Aug 2016 17:45:21 +0200 -- eloaders <eloaders@linux.pl> Mon, 22 Aug 2016 17:45:21 +0200

View file

@ -1,44 +1,44 @@
Microsoft Developer Studio Workspace File, Format Version 6.00 Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
############################################################################### ###############################################################################
Project: "cpuid_tool"=.\cpuid_tool\cpuid_tool.dsp - Package Owner=<4> Project: "cpuid_tool"=.\cpuid_tool\cpuid_tool.dsp - Package Owner=<4>
Package=<5> Package=<5>
{{{ {{{
}}} }}}
Package=<4> Package=<4>
{{{ {{{
Begin Project Dependency Begin Project Dependency
Project_Dep_Name libcpuid Project_Dep_Name libcpuid
End Project Dependency End Project Dependency
}}} }}}
############################################################################### ###############################################################################
Project: "libcpuid"=.\libcpuid\libcpuid.dsp - Package Owner=<4> Project: "libcpuid"=.\libcpuid\libcpuid.dsp - Package Owner=<4>
Package=<5> Package=<5>
{{{ {{{
}}} }}}
Package=<4> Package=<4>
{{{ {{{
}}} }}}
############################################################################### ###############################################################################
Global: Global:
Package=<5> Package=<5>
{{{ {{{
}}} }}}
Package=<3> Package=<3>
{{{ {{{
}}} }}}
############################################################################### ###############################################################################

File diff suppressed because it is too large Load diff

View file

@ -1,36 +1,36 @@
## Makefile for libcpuid, MSVC compiler, X64 ## Makefile for libcpuid, MSVC compiler, X64
all: libcpuid.lib all: libcpuid.lib
ASM = ml64 /nologo ASM = ml64 /nologo
CC = cl.exe /nologo /TC CC = cl.exe /nologo /TC
OPTFLAGS = /MT OPTFLAGS = /MT
DEFINES = /D "VERSION=\"0.4.1\"" DEFINES = /D "VERSION=\"0.4.1\""
OBJECTS = masm-x64.obj asm-bits.obj cpuid_main.obj libcpuid_util.obj recog_amd.obj recog_intel.obj rdtsc.obj OBJECTS = masm-x64.obj asm-bits.obj cpuid_main.obj libcpuid_util.obj recog_amd.obj recog_intel.obj rdtsc.obj
libcpuid.lib: $(OBJECTS) libcpuid.lib: $(OBJECTS)
lib /nologo /MACHINE:AMD64 /out:libcpuid.lib $(OBJECTS) bufferoverflowU.lib lib /nologo /MACHINE:AMD64 /out:libcpuid.lib $(OBJECTS) bufferoverflowU.lib
masm-x64.obj: masm-x64.asm masm-x64.obj: masm-x64.asm
$(ASM) /c masm-x64.asm $(ASM) /c masm-x64.asm
asm-bits.obj: asm-bits.c asm-bits.obj: asm-bits.c
$(CC) $(OPTFLAGS) $(DEFINES) /c asm-bits.c $(CC) $(OPTFLAGS) $(DEFINES) /c asm-bits.c
cpuid_main.obj: cpuid_main.c cpuid_main.obj: cpuid_main.c
$(CC) $(OPTFLAGS) $(DEFINES) /c cpuid_main.c $(CC) $(OPTFLAGS) $(DEFINES) /c cpuid_main.c
libcpuid_util.obj: libcpuid_util.c libcpuid_util.obj: libcpuid_util.c
$(CC) $(OPTFLAGS) $(DEFINES) /c libcpuid_util.c $(CC) $(OPTFLAGS) $(DEFINES) /c libcpuid_util.c
recog_amd.obj: recog_amd.c recog_amd.obj: recog_amd.c
$(CC) $(OPTFLAGS) $(DEFINES) /c recog_amd.c $(CC) $(OPTFLAGS) $(DEFINES) /c recog_amd.c
recog_intel.obj: recog_intel.c recog_intel.obj: recog_intel.c
$(CC) $(OPTFLAGS) $(DEFINES) /c recog_intel.c $(CC) $(OPTFLAGS) $(DEFINES) /c recog_intel.c
rdtsc.obj: rdtsc.c rdtsc.obj: rdtsc.c
$(CC) $(OPTFLAGS) $(DEFINES) /c rdtsc.c $(CC) $(OPTFLAGS) $(DEFINES) /c rdtsc.c
clean: clean:
del *.obj libcpuid.lib del *.obj libcpuid.lib

View file

@ -1,40 +1,40 @@
# Makefile for Win32 # Makefile for Win32
# #
# This is required on machines with multiple versions of the Microsoft compiler # This is required on machines with multiple versions of the Microsoft compiler
# #
# E.g. if you have Visual Studio 2008 and compile libcpuid with it, the static lib # E.g. if you have Visual Studio 2008 and compile libcpuid with it, the static lib
# will not link in an executable, created through makefiles and MSVC 2003 (7.1). # will not link in an executable, created through makefiles and MSVC 2003 (7.1).
# #
# The solution is to use this custom makefile and compile libcpuid for MSVC 2003 # The solution is to use this custom makefile and compile libcpuid for MSVC 2003
# #
all: libcpuid.lib all: libcpuid.lib
CC = cl.exe /nologo /TC CC = cl.exe /nologo /TC
OPTFLAGS = /MT OPTFLAGS = /MT
DEFINES = /D "VERSION=\"0.4.1\"" DEFINES = /D "VERSION=\"0.4.1\""
OBJECTS = asm-bits.obj cpuid_main.obj libcpuid_util.obj recog_amd.obj recog_intel.obj rdtsc.obj OBJECTS = asm-bits.obj cpuid_main.obj libcpuid_util.obj recog_amd.obj recog_intel.obj rdtsc.obj
libcpuid.lib: $(OBJECTS) libcpuid.lib: $(OBJECTS)
lib /nologo /out:libcpuid.lib $(OBJECTS) lib /nologo /out:libcpuid.lib $(OBJECTS)
asm-bits.obj: asm-bits.c asm-bits.obj: asm-bits.c
$(CC) $(OPTFLAGS) $(DEFINES) /c asm-bits.c $(CC) $(OPTFLAGS) $(DEFINES) /c asm-bits.c
cpuid_main.obj: cpuid_main.c cpuid_main.obj: cpuid_main.c
$(CC) $(OPTFLAGS) $(DEFINES) /c cpuid_main.c $(CC) $(OPTFLAGS) $(DEFINES) /c cpuid_main.c
libcpuid_util.obj: libcpuid_util.c libcpuid_util.obj: libcpuid_util.c
$(CC) $(OPTFLAGS) $(DEFINES) /c libcpuid_util.c $(CC) $(OPTFLAGS) $(DEFINES) /c libcpuid_util.c
recog_amd.obj: recog_amd.c recog_amd.obj: recog_amd.c
$(CC) $(OPTFLAGS) $(DEFINES) /c recog_amd.c $(CC) $(OPTFLAGS) $(DEFINES) /c recog_amd.c
recog_intel.obj: recog_intel.c recog_intel.obj: recog_intel.c
$(CC) $(OPTFLAGS) $(DEFINES) /c recog_intel.c $(CC) $(OPTFLAGS) $(DEFINES) /c recog_intel.c
rdtsc.obj: rdtsc.c rdtsc.obj: rdtsc.c
$(CC) $(OPTFLAGS) $(DEFINES) /c rdtsc.c $(CC) $(OPTFLAGS) $(DEFINES) /c rdtsc.c
clean: clean:
del *.obj libcpuid.lib del *.obj libcpuid.lib

View file

@ -36,4 +36,4 @@
CODE(FUSION_EA), CODE(FUSION_EA),
CODE(FUSION_Z), CODE(FUSION_Z),
CODE(FUSION_A), CODE(FUSION_A),

View file

@ -76,7 +76,7 @@ int cpuid_exists_by_eflags(void)
} }
#ifdef INLINE_ASM_SUPPORTED #ifdef INLINE_ASM_SUPPORTED
/* /*
* with MSVC/AMD64, the exec_cpuid() and cpu_rdtsc() functions * with MSVC/AMD64, the exec_cpuid() and cpu_rdtsc() functions
* are implemented in separate .asm files. Otherwise, use inline assembly * are implemented in separate .asm files. Otherwise, use inline assembly
*/ */
@ -90,14 +90,14 @@ void exec_cpuid(uint32_t *regs)
" push %%rbx\n" " push %%rbx\n"
" push %%rcx\n" " push %%rcx\n"
" push %%rdx\n" " push %%rdx\n"
" mov (%%rdi), %%eax\n" " mov (%%rdi), %%eax\n"
" mov 4(%%rdi), %%ebx\n" " mov 4(%%rdi), %%ebx\n"
" mov 8(%%rdi), %%ecx\n" " mov 8(%%rdi), %%ecx\n"
" mov 12(%%rdi), %%edx\n" " mov 12(%%rdi), %%edx\n"
" cpuid\n" " cpuid\n"
" movl %%eax, (%%rdi)\n" " movl %%eax, (%%rdi)\n"
" movl %%ebx, 4(%%rdi)\n" " movl %%ebx, 4(%%rdi)\n"
" movl %%ecx, 8(%%rdi)\n" " movl %%ecx, 8(%%rdi)\n"
@ -116,14 +116,14 @@ void exec_cpuid(uint32_t *regs)
" push %%ebx\n" " push %%ebx\n"
" push %%ecx\n" " push %%ecx\n"
" push %%edx\n" " push %%edx\n"
" mov (%%edi), %%eax\n" " mov (%%edi), %%eax\n"
" mov 4(%%edi), %%ebx\n" " mov 4(%%edi), %%ebx\n"
" mov 8(%%edi), %%ecx\n" " mov 8(%%edi), %%ecx\n"
" mov 12(%%edi), %%edx\n" " mov 12(%%edi), %%edx\n"
" cpuid\n" " cpuid\n"
" mov %%eax, (%%edi)\n" " mov %%eax, (%%edi)\n"
" mov %%ebx, 4(%%edi)\n" " mov %%ebx, 4(%%edi)\n"
" mov %%ecx, 8(%%edi)\n" " mov %%ecx, 8(%%edi)\n"
@ -144,19 +144,19 @@ void exec_cpuid(uint32_t *regs)
push edx push edx
push edi push edi
mov edi, regs mov edi, regs
mov eax, [edi] mov eax, [edi]
mov ebx, [edi+4] mov ebx, [edi+4]
mov ecx, [edi+8] mov ecx, [edi+8]
mov edx, [edi+12] mov edx, [edi+12]
cpuid cpuid
mov [edi], eax mov [edi], eax
mov [edi+4], ebx mov [edi+4], ebx
mov [edi+8], ecx mov [edi+8], ecx
mov [edi+12], edx mov [edi+12], edx
pop edi pop edi
pop edx pop edx
pop ecx pop ecx
@ -510,7 +510,7 @@ void busy_sse_loop(int cycles)
" addps %%xmm6, %%xmm5\n" " addps %%xmm6, %%xmm5\n"
" addps %%xmm7, %%xmm6\n" " addps %%xmm7, %%xmm6\n"
" addps %%xmm0, %%xmm7\n" " addps %%xmm0, %%xmm7\n"
" dec %%eax\n" " dec %%eax\n"
/* "jnz .bsLoop\n" */ /* "jnz .bsLoop\n" */
" jnz 1b\n" " jnz 1b\n"

View file

@ -128,7 +128,7 @@ static int get_total_cpus(void)
#if defined linux || defined __linux__ || defined __sun #if defined linux || defined __linux__ || defined __sun
#include <sys/sysinfo.h> #include <sys/sysinfo.h>
#include <unistd.h> #include <unistd.h>
static int get_total_cpus(void) static int get_total_cpus(void)
{ {
return sysconf(_SC_NPROCESSORS_ONLN); return sysconf(_SC_NPROCESSORS_ONLN);
@ -314,7 +314,7 @@ static int cpuid_basic_identify(struct cpu_raw_data_t* raw, struct cpu_id_t* dat
data->ext_model = data->model + (xmodel << 4); data->ext_model = data->model + (xmodel << 4);
} }
ext = raw->ext_cpuid[0][0] - 0x8000000; ext = raw->ext_cpuid[0][0] - 0x8000000;
/* obtain the brand string, if present: */ /* obtain the brand string, if present: */
if (ext >= 4) { if (ext >= 4) {
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
@ -417,13 +417,13 @@ int cpuid_serialize_raw_data(struct cpu_raw_data_t* data, const char* filename)
{ {
int i; int i;
FILE *f; FILE *f;
if (!strcmp(filename, "")) if (!strcmp(filename, ""))
f = stdout; f = stdout;
else else
f = fopen(filename, "wt"); f = fopen(filename, "wt");
if (!f) return set_error(ERR_OPEN); if (!f) return set_error(ERR_OPEN);
fprintf(f, "version=%s\n", VERSION); fprintf(f, "version=%s\n", VERSION);
for (i = 0; i < MAX_CPUID_LEVEL; i++) for (i = 0; i < MAX_CPUID_LEVEL; i++)
fprintf(f, "basic_cpuid[%d]=%08x %08x %08x %08x\n", i, fprintf(f, "basic_cpuid[%d]=%08x %08x %08x %08x\n", i,
@ -449,7 +449,7 @@ int cpuid_serialize_raw_data(struct cpu_raw_data_t* data, const char* filename)
fprintf(f, "intel_fn14h[%d]=%08x %08x %08x %08x\n", i, fprintf(f, "intel_fn14h[%d]=%08x %08x %08x %08x\n", i,
data->intel_fn14h[i][0], data->intel_fn14h[i][1], data->intel_fn14h[i][0], data->intel_fn14h[i][1],
data->intel_fn14h[i][2], data->intel_fn14h[i][3]); data->intel_fn14h[i][2], data->intel_fn14h[i][3]);
if (strcmp(filename, "")) if (strcmp(filename, ""))
fclose(f); fclose(f);
return set_error(ERR_OK); return set_error(ERR_OK);
@ -465,9 +465,9 @@ int cpuid_deserialize_raw_data(struct cpu_raw_data_t* data, const char* filename
int cur_line = 0; int cur_line = 0;
int recognized; int recognized;
FILE *f; FILE *f;
raw_data_t_constructor(data); raw_data_t_constructor(data);
if (!strcmp(filename, "")) if (!strcmp(filename, ""))
f = stdin; f = stdin;
else else
@ -508,7 +508,7 @@ int cpuid_deserialize_raw_data(struct cpu_raw_data_t* data, const char* filename
warnf("Warning: %s:%d not understood!\n", filename, cur_line); warnf("Warning: %s:%d not understood!\n", filename, cur_line);
} }
} }
if (strcmp(filename, "")) if (strcmp(filename, ""))
fclose(f); fclose(f);
return set_error(ERR_OK); return set_error(ERR_OK);

View file

@ -1,84 +1,84 @@
// A simple utility to read and embed the MSR drivers for X86 // A simple utility to read and embed the MSR drivers for X86
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include <vector> #include <vector>
#include <string> #include <string>
using namespace std; using namespace std;
const char* drivers_root = "..\\contrib\\MSR Driver\\"; const char* drivers_root = "..\\contrib\\MSR Driver\\";
const char* sourcefile = "msrdriver.c"; const char* sourcefile = "msrdriver.c";
char* images[2]; char* images[2];
int sizes[2]; int sizes[2];
const char* filenames[] = { "TmpRdr.sys", "TmpRdr64.sys" }; const char* filenames[] = { "TmpRdr.sys", "TmpRdr64.sys" };
vector<string> source; vector<string> source;
bool read_image(const char* filename, char*& image, int& isize) bool read_image(const char* filename, char*& image, int& isize)
{ {
char fn[512]; char fn[512];
sprintf(fn, "%s%s", drivers_root, filename); sprintf(fn, "%s%s", drivers_root, filename);
FILE* f = fopen(fn, "rb"); FILE* f = fopen(fn, "rb");
if (!f) return false; if (!f) return false;
fseek(f, 0, SEEK_END); fseek(f, 0, SEEK_END);
long size = ftell(f); long size = ftell(f);
isize = (int) size; isize = (int) size;
rewind(f); rewind(f);
image = new char[size]; image = new char[size];
fread(image, 1, size, f); fread(image, 1, size, f);
fclose(f); fclose(f);
return true; return true;
} }
bool read_source(const char* filename) bool read_source(const char* filename)
{ {
source.clear(); source.clear();
FILE* f = fopen(filename, "rt"); FILE* f = fopen(filename, "rt");
if (!f) return false; if (!f) return false;
char line[200]; char line[200];
while (fgets(line, sizeof(line), f)) { while (fgets(line, sizeof(line), f)) {
int i = (int) strlen(line); int i = (int) strlen(line);
if (i && line[i - 1] == '\n') line[--i] = 0; if (i && line[i - 1] == '\n') line[--i] = 0;
source.push_back(string(line)); source.push_back(string(line));
} }
fclose(f); fclose(f);
return true; return true;
} }
void print_image(FILE* f, const char* arch, const char* image, int size) void print_image(FILE* f, const char* arch, const char* image, int size)
{ {
fprintf(f, "int cc_%sdriver_code_size = %d;\n", arch, size); fprintf(f, "int cc_%sdriver_code_size = %d;\n", arch, size);
fprintf(f, "uint8_t cc_%sdriver_code[%d] = {", arch, size); fprintf(f, "uint8_t cc_%sdriver_code[%d] = {", arch, size);
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
if (i % 18 == 0) fprintf(f, "\n\t"); if (i % 18 == 0) fprintf(f, "\n\t");
fprintf(f, "0x%02x,", (unsigned) (unsigned char) image[i]); fprintf(f, "0x%02x,", (unsigned) (unsigned char) image[i]);
} }
fprintf(f, "\n};\n"); fprintf(f, "\n};\n");
} }
int main(void) int main(void)
{ {
for (int i = 0; i < 2; i++) for (int i = 0; i < 2; i++)
if (!read_image(filenames[i], images[i], sizes[i])) { if (!read_image(filenames[i], images[i], sizes[i])) {
printf("Cannot read image `%s' from `%s'!\n", filenames[i], drivers_root); printf("Cannot read image `%s' from `%s'!\n", filenames[i], drivers_root);
return -1; return -1;
} }
if (!read_source(sourcefile)) { if (!read_source(sourcefile)) {
printf("Cannot read source `%s'\n", sourcefile); printf("Cannot read source `%s'\n", sourcefile);
return -2; return -2;
} }
FILE* f = fopen(sourcefile, "wt"); FILE* f = fopen(sourcefile, "wt");
bool on = true; bool on = true;
for (unsigned i = 0; i < source.size(); i++) { for (unsigned i = 0; i < source.size(); i++) {
if (source[i] == "//} end") if (source[i] == "//} end")
on = true; on = true;
if (on) fprintf(f, "%s\n", source[i].c_str()); if (on) fprintf(f, "%s\n", source[i].c_str());
if (source[i] == "//begin {") { if (source[i] == "//begin {") {
on = false; on = false;
print_image(f, "x86", images[0], sizes[0]); print_image(f, "x86", images[0], sizes[0]);
print_image(f, "x64", images[1], sizes[1]); print_image(f, "x64", images[1], sizes[1]);
} }
} }
return 0; return 0;
} }

View file

@ -1,35 +1,35 @@
LIBRARY LIBCPUID LIBRARY LIBCPUID
EXPORTS EXPORTS
cpuid_present @1 cpuid_present @1
cpu_exec_cpuid @2 cpu_exec_cpuid @2
cpu_exec_cpuid_ext @3 cpu_exec_cpuid_ext @3
cpuid_get_raw_data @4 cpuid_get_raw_data @4
cpuid_serialize_raw_data @5 cpuid_serialize_raw_data @5
cpuid_deserialize_raw_data @6 cpuid_deserialize_raw_data @6
cpu_identify @7 cpu_identify @7
cpu_feature_str @8 cpu_feature_str @8
cpuid_error @9 cpuid_error @9
cpu_rdtsc @10 cpu_rdtsc @10
cpu_tsc_mark @11 cpu_tsc_mark @11
cpu_tsc_unmark @12 cpu_tsc_unmark @12
cpu_clock_by_mark @13 cpu_clock_by_mark @13
cpu_clock_by_os @14 cpu_clock_by_os @14
cpu_clock_measure @15 cpu_clock_measure @15
cpu_clock @16 cpu_clock @16
cpuid_lib_version @17 cpuid_lib_version @17
cpuid_set_warn_function @18 cpuid_set_warn_function @18
cpuid_set_verbosiness_level @19 cpuid_set_verbosiness_level @19
cpuid_get_cpu_list @20 cpuid_get_cpu_list @20
cpuid_free_cpu_list @21 cpuid_free_cpu_list @21
cpu_msr_driver_open @22 cpu_msr_driver_open @22
cpu_rdmsr @23 cpu_rdmsr @23
cpu_msrinfo @24 cpu_msrinfo @24
cpu_msr_driver_close @25 cpu_msr_driver_close @25
cpu_clock_by_ic @26 cpu_clock_by_ic @26
cpuid_get_total_cpus @27 cpuid_get_total_cpus @27
cpu_msr_driver_open_core @28 cpu_msr_driver_open_core @28
cpuid_get_vendor @29 cpuid_get_vendor @29
cpu_rdmsr_range @30 cpu_rdmsr_range @30
cpuid_get_epc @31 cpuid_get_epc @31
msr_serialize_raw_data @32 msr_serialize_raw_data @32

View file

@ -29,20 +29,20 @@
* of no external use and isn't a complete list of intel products. * of no external use and isn't a complete list of intel products.
*/ */
CODE2(PENTIUM, 2000), CODE2(PENTIUM, 2000),
CODE(IRWIN), CODE(IRWIN),
CODE(POTOMAC), CODE(POTOMAC),
CODE(GAINESTOWN), CODE(GAINESTOWN),
CODE(WESTMERE), CODE(WESTMERE),
CODE(PENTIUM_M), CODE(PENTIUM_M),
CODE(NOT_CELERON), CODE(NOT_CELERON),
CODE(CORE_SOLO), CODE(CORE_SOLO),
CODE(MOBILE_CORE_SOLO), CODE(MOBILE_CORE_SOLO),
CODE(CORE_DUO), CODE(CORE_DUO),
CODE(MOBILE_CORE_DUO), CODE(MOBILE_CORE_DUO),
CODE(WOLFDALE), CODE(WOLFDALE),
CODE(MEROM), CODE(MEROM),
CODE(PENRYN), CODE(PENRYN),
@ -51,7 +51,7 @@
CODE(QUAD_CORE_HT), CODE(QUAD_CORE_HT),
CODE(MORE_THAN_QUADCORE), CODE(MORE_THAN_QUADCORE),
CODE(PENTIUM_D), CODE(PENTIUM_D),
CODE(SILVERTHORNE), CODE(SILVERTHORNE),
CODE(DIAMONDVILLE), CODE(DIAMONDVILLE),
CODE(PINEVIEW), CODE(PINEVIEW),

View file

@ -1,156 +1,156 @@
# Microsoft Developer Studio Project File - Name="libcpuid" - Package Owner=<4> # Microsoft Developer Studio Project File - Name="libcpuid" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00 # Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT ** # ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104 # TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=libcpuid - Win32 Debug CFG=libcpuid - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run !MESSAGE use the Export Makefile command and run
!MESSAGE !MESSAGE
!MESSAGE NMAKE /f "libcpuid.mak". !MESSAGE NMAKE /f "libcpuid.mak".
!MESSAGE !MESSAGE
!MESSAGE You can specify a configuration when running NMAKE !MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE !MESSAGE
!MESSAGE NMAKE /f "libcpuid.mak" CFG="libcpuid - Win32 Debug" !MESSAGE NMAKE /f "libcpuid.mak" CFG="libcpuid - Win32 Debug"
!MESSAGE !MESSAGE
!MESSAGE Possible choices for configuration are: !MESSAGE Possible choices for configuration are:
!MESSAGE !MESSAGE
!MESSAGE "libcpuid - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "libcpuid - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "libcpuid - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE "libcpuid - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE !MESSAGE
# Begin Project # Begin Project
# PROP AllowPerConfigDependencies 0 # PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName "" # PROP Scc_ProjName ""
# PROP Scc_LocalPath "" # PROP Scc_LocalPath ""
CPP=cl.exe CPP=cl.exe
RSC=rc.exe RSC=rc.exe
!IF "$(CFG)" == "libcpuid - Win32 Release" !IF "$(CFG)" == "libcpuid - Win32 Release"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0 # PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release" # PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release" # PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 0 # PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release" # PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release" # PROP Intermediate_Dir "Release"
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D VERSION=\"0.4.1\" /YX /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D VERSION=\"0.4.1\" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LIB32=link.exe -lib LIB32=link.exe -lib
# ADD BASE LIB32 /nologo # ADD BASE LIB32 /nologo
# ADD LIB32 /nologo # ADD LIB32 /nologo
!ELSEIF "$(CFG)" == "libcpuid - Win32 Debug" !ELSEIF "$(CFG)" == "libcpuid - Win32 Debug"
# PROP BASE Use_MFC 0 # PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1 # PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug" # PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug" # PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir "" # PROP BASE Target_Dir ""
# PROP Use_MFC 0 # PROP Use_MFC 0
# PROP Use_Debug_Libraries 1 # PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug" # PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug" # PROP Intermediate_Dir "Debug"
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D VERSION=\"0.4.1\" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D VERSION=\"0.4.1\" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LIB32=link.exe -lib LIB32=link.exe -lib
# ADD BASE LIB32 /nologo # ADD BASE LIB32 /nologo
# ADD LIB32 /nologo # ADD LIB32 /nologo
!ENDIF !ENDIF
# Begin Target # Begin Target
# Name "libcpuid - Win32 Release" # Name "libcpuid - Win32 Release"
# Name "libcpuid - Win32 Debug" # Name "libcpuid - Win32 Debug"
# Begin Group "Source Files" # Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File # Begin Source File
SOURCE=".\asm-bits.c" SOURCE=".\asm-bits.c"
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\cpuid_main.c SOURCE=.\cpuid_main.c
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\libcpuid_util.c SOURCE=.\libcpuid_util.c
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\msrdriver.c SOURCE=.\msrdriver.c
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\rdmsr.c SOURCE=.\rdmsr.c
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\rdtsc.c SOURCE=.\rdtsc.c
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\recog_amd.c SOURCE=.\recog_amd.c
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\recog_intel.c SOURCE=.\recog_intel.c
# End Source File # End Source File
# End Group # End Group
# Begin Group "Header Files" # Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl" # PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File # Begin Source File
SOURCE=".\asm-bits.h" SOURCE=".\asm-bits.h"
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\libcpuid.h SOURCE=.\libcpuid.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\libcpuid_constants.h SOURCE=.\libcpuid_constants.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\libcpuid_types.h SOURCE=.\libcpuid_types.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\libcpuid_util.h SOURCE=.\libcpuid_util.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\rdtsc.h SOURCE=.\rdtsc.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\recog_amd.h SOURCE=.\recog_amd.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\recog_intel.h SOURCE=.\recog_intel.h
# End Source File # End Source File
# End Group # End Group
# End Target # End Target
# End Project # End Project

View file

@ -61,7 +61,7 @@
*/ */
/** @mainpage A simple libcpuid introduction /** @mainpage A simple libcpuid introduction
* *
* LibCPUID provides CPU identification and access to the CPUID and RDTSC * LibCPUID provides CPU identification and access to the CPUID and RDTSC
* instructions on the x86. * instructions on the x86.
* <p> * <p>
@ -74,7 +74,7 @@
* \ref cpu_tsc_mark + \ref cpu_tsc_unmark + \ref cpu_clock_by_mark, * \ref cpu_tsc_mark + \ref cpu_tsc_unmark + \ref cpu_clock_by_mark,
* \ref cpu_clock_measure or \ref cpu_clock_by_ic. * \ref cpu_clock_measure or \ref cpu_clock_by_ic.
* Read carefully for pros/cons of each method. <br> * Read carefully for pros/cons of each method. <br>
* *
* To read MSRs, use \ref cpu_msr_driver_open to get a handle, and then * To read MSRs, use \ref cpu_msr_driver_open to get a handle, and then
* \ref cpu_rdmsr for querying abilities. Some MSR decoding is available on recent * \ref cpu_rdmsr for querying abilities. Some MSR decoding is available on recent
* CPUs, and can be queried through \ref cpu_msrinfo; the various types of queries * CPUs, and can be queried through \ref cpu_msrinfo; the various types of queries
@ -111,7 +111,7 @@ typedef enum {
VENDOR_SIS, /*!< x86 CPU by SiS */ VENDOR_SIS, /*!< x86 CPU by SiS */
VENDOR_NSC, /*!< x86 CPU by National Semiconductor */ VENDOR_NSC, /*!< x86 CPU by National Semiconductor */
VENDOR_HYGON, /*!< Hygon CPU */ VENDOR_HYGON, /*!< Hygon CPU */
NUM_CPU_VENDORS, /*!< Valid CPU vendor ids: 0..NUM_CPU_VENDORS - 1 */ NUM_CPU_VENDORS, /*!< Valid CPU vendor ids: 0..NUM_CPU_VENDORS - 1 */
VENDOR_UNKNOWN = -1, VENDOR_UNKNOWN = -1,
} cpu_vendor_t; } cpu_vendor_t;
@ -130,17 +130,17 @@ struct cpu_raw_data_t {
/** contains results of CPUID for eax = 0x80000000, 0x80000001, ...*/ /** contains results of CPUID for eax = 0x80000000, 0x80000001, ...*/
uint32_t ext_cpuid[MAX_EXT_CPUID_LEVEL][4]; uint32_t ext_cpuid[MAX_EXT_CPUID_LEVEL][4];
/** when the CPU is intel and it supports deterministic cache /** when the CPU is intel and it supports deterministic cache
information: this contains the results of CPUID for eax = 4 information: this contains the results of CPUID for eax = 4
and ecx = 0, 1, ... */ and ecx = 0, 1, ... */
uint32_t intel_fn4[MAX_INTELFN4_LEVEL][4]; uint32_t intel_fn4[MAX_INTELFN4_LEVEL][4];
/** when the CPU is intel and it supports leaf 0Bh (Extended Topology /** when the CPU is intel and it supports leaf 0Bh (Extended Topology
enumeration leaf), this stores the result of CPUID with enumeration leaf), this stores the result of CPUID with
eax = 11 and ecx = 0, 1, 2... */ eax = 11 and ecx = 0, 1, 2... */
uint32_t intel_fn11[MAX_INTELFN11_LEVEL][4]; uint32_t intel_fn11[MAX_INTELFN11_LEVEL][4];
/** when the CPU is intel and supports leaf 12h (SGX enumeration leaf), /** when the CPU is intel and supports leaf 12h (SGX enumeration leaf),
* this stores the result of CPUID with eax = 0x12 and * this stores the result of CPUID with eax = 0x12 and
* ecx = 0, 1, 2... */ * ecx = 0, 1, 2... */
@ -160,7 +160,7 @@ struct cpu_raw_data_t {
* ... * ...
* struct cpu_raw_data_t raw; * struct cpu_raw_data_t raw;
* struct cpu_id_t id; * struct cpu_id_t id;
* *
* if (cpuid_get_raw_data(&raw) == 0 && cpu_identify(&raw, &id) == 0 && id.sgx.present) { * if (cpuid_get_raw_data(&raw) == 0 && cpu_identify(&raw, &id) == 0 && id.sgx.present) {
* printf("SGX is present.\n"); * printf("SGX is present.\n");
* printf("SGX1 instructions: %s.\n", id.sgx.flags[INTEL_SGX1] ? "present" : "absent"); * printf("SGX1 instructions: %s.\n", id.sgx.flags[INTEL_SGX1] ? "present" : "absent");
@ -175,42 +175,42 @@ struct cpu_raw_data_t {
* printf("SGX is not present.\n"); * printf("SGX is not present.\n");
* } * }
* @endcode * @endcode
*/ */
struct cpu_sgx_t { struct cpu_sgx_t {
/** Whether SGX is present (boolean) */ /** Whether SGX is present (boolean) */
uint32_t present; uint32_t present;
/** Max enclave size in 32-bit mode. This is a power-of-two value: /** Max enclave size in 32-bit mode. This is a power-of-two value:
* if it is "31", then the max enclave size is 2^31 bytes (2 GiB). * if it is "31", then the max enclave size is 2^31 bytes (2 GiB).
*/ */
uint8_t max_enclave_32bit; uint8_t max_enclave_32bit;
/** Max enclave size in 64-bit mode. This is a power-of-two value: /** Max enclave size in 64-bit mode. This is a power-of-two value:
* if it is "36", then the max enclave size is 2^36 bytes (64 GiB). * if it is "36", then the max enclave size is 2^36 bytes (64 GiB).
*/ */
uint8_t max_enclave_64bit; uint8_t max_enclave_64bit;
/** /**
* contains SGX feature flags. See the \ref cpu_sgx_feature_t * contains SGX feature flags. See the \ref cpu_sgx_feature_t
* "INTEL_SGX*" macros below. * "INTEL_SGX*" macros below.
*/ */
uint8_t flags[SGX_FLAGS_MAX]; uint8_t flags[SGX_FLAGS_MAX];
/** number of Enclave Page Cache (EPC) sections. Info for each /** number of Enclave Page Cache (EPC) sections. Info for each
* section is available through the \ref cpuid_get_epc() function * section is available through the \ref cpuid_get_epc() function
*/ */
int num_epc_sections; int num_epc_sections;
/** bit vector of the supported extended features that can be written /** bit vector of the supported extended features that can be written
* to the MISC region of the SSA (Save State Area) * to the MISC region of the SSA (Save State Area)
*/ */
uint32_t misc_select; uint32_t misc_select;
/** a bit vector of the attributes that can be set to SECS.ATTRIBUTES /** a bit vector of the attributes that can be set to SECS.ATTRIBUTES
* via ECREATE. Corresponds to bits 0-63 (incl.) of SECS.ATTRIBUTES. * via ECREATE. Corresponds to bits 0-63 (incl.) of SECS.ATTRIBUTES.
*/ */
uint64_t secs_attributes; uint64_t secs_attributes;
/** a bit vector of the bits that can be set in the XSAVE feature /** a bit vector of the bits that can be set in the XSAVE feature
* request mask; Corresponds to bits 64-127 of SECS.ATTRIBUTES. * request mask; Corresponds to bits 64-127 of SECS.ATTRIBUTES.
*/ */
@ -223,45 +223,45 @@ struct cpu_sgx_t {
struct cpu_id_t { struct cpu_id_t {
/** contains the CPU vendor string, e.g. "GenuineIntel" */ /** contains the CPU vendor string, e.g. "GenuineIntel" */
char vendor_str[VENDOR_STR_MAX]; char vendor_str[VENDOR_STR_MAX];
/** contains the brand string, e.g. "Intel(R) Xeon(TM) CPU 2.40GHz" */ /** contains the brand string, e.g. "Intel(R) Xeon(TM) CPU 2.40GHz" */
char brand_str[BRAND_STR_MAX]; char brand_str[BRAND_STR_MAX];
/** contains the recognized CPU vendor */ /** contains the recognized CPU vendor */
cpu_vendor_t vendor; cpu_vendor_t vendor;
/** /**
* contain CPU flags. Used to test for features. See * contain CPU flags. Used to test for features. See
* the \ref cpu_feature_t "CPU_FEATURE_*" macros below. * the \ref cpu_feature_t "CPU_FEATURE_*" macros below.
* @see Features * @see Features
*/ */
uint8_t flags[CPU_FLAGS_MAX]; uint8_t flags[CPU_FLAGS_MAX];
/** CPU family */ /** CPU family */
int32_t family; int32_t family;
/** CPU model */ /** CPU model */
int32_t model; int32_t model;
/** CPU stepping */ /** CPU stepping */
int32_t stepping; int32_t stepping;
/** CPU extended family */ /** CPU extended family */
int32_t ext_family; int32_t ext_family;
/** CPU extended model */ /** CPU extended model */
int32_t ext_model; int32_t ext_model;
/** Number of CPU cores on the current processor */ /** Number of CPU cores on the current processor */
int32_t num_cores; int32_t num_cores;
/** /**
* Number of logical processors on the current processor. * Number of logical processors on the current processor.
* Could be more than the number of physical cores, * Could be more than the number of physical cores,
* e.g. when the processor has HyperThreading. * e.g. when the processor has HyperThreading.
*/ */
int32_t num_logical_cpus; int32_t num_logical_cpus;
/** /**
* The total number of logical processors. * The total number of logical processors.
* The same value is available through \ref cpuid_get_total_cpus. * The same value is available through \ref cpuid_get_total_cpus.
@ -277,13 +277,13 @@ struct cpu_id_t {
* *
*/ */
int32_t total_logical_cpus; int32_t total_logical_cpus;
/** /**
* L1 data cache size in KB. Could be zero, if the CPU lacks cache. * L1 data cache size in KB. Could be zero, if the CPU lacks cache.
* If the size cannot be determined, it will be -1. * If the size cannot be determined, it will be -1.
*/ */
int32_t l1_data_cache; int32_t l1_data_cache;
/** /**
* L1 instruction cache size in KB. Could be zero, if the CPU lacks * L1 instruction cache size in KB. Could be zero, if the CPU lacks
* cache. If the size cannot be determined, it will be -1. * cache. If the size cannot be determined, it will be -1.
@ -291,40 +291,40 @@ struct cpu_id_t {
* a trace cache, the size will be expressed in K uOps. * a trace cache, the size will be expressed in K uOps.
*/ */
int32_t l1_instruction_cache; int32_t l1_instruction_cache;
/** /**
* L2 cache size in KB. Could be zero, if the CPU lacks L2 cache. * L2 cache size in KB. Could be zero, if the CPU lacks L2 cache.
* If the size of the cache could not be determined, it will be -1 * If the size of the cache could not be determined, it will be -1
*/ */
int32_t l2_cache; int32_t l2_cache;
/** L3 cache size in KB. Zero on most systems */ /** L3 cache size in KB. Zero on most systems */
int32_t l3_cache; int32_t l3_cache;
/** L4 cache size in KB. Zero on most systems */ /** L4 cache size in KB. Zero on most systems */
int32_t l4_cache; int32_t l4_cache;
/** Cache associativity for the L1 data cache. -1 if undetermined */ /** Cache associativity for the L1 data cache. -1 if undetermined */
int32_t l1_assoc; int32_t l1_assoc;
/** Cache associativity for the L2 cache. -1 if undetermined */ /** Cache associativity for the L2 cache. -1 if undetermined */
int32_t l2_assoc; int32_t l2_assoc;
/** Cache associativity for the L3 cache. -1 if undetermined */ /** Cache associativity for the L3 cache. -1 if undetermined */
int32_t l3_assoc; int32_t l3_assoc;
/** Cache associativity for the L4 cache. -1 if undetermined */ /** Cache associativity for the L4 cache. -1 if undetermined */
int32_t l4_assoc; int32_t l4_assoc;
/** Cache-line size for L1 data cache. -1 if undetermined */ /** Cache-line size for L1 data cache. -1 if undetermined */
int32_t l1_cacheline; int32_t l1_cacheline;
/** Cache-line size for L2 cache. -1 if undetermined */ /** Cache-line size for L2 cache. -1 if undetermined */
int32_t l2_cacheline; int32_t l2_cacheline;
/** Cache-line size for L3 cache. -1 if undetermined */ /** Cache-line size for L3 cache. -1 if undetermined */
int32_t l3_cacheline; int32_t l3_cacheline;
/** Cache-line size for L4 cache. -1 if undetermined */ /** Cache-line size for L4 cache. -1 if undetermined */
int32_t l4_cacheline; int32_t l4_cacheline;
@ -343,17 +343,17 @@ struct cpu_id_t {
* @endcode * @endcode
*/ */
char cpu_codename[64]; char cpu_codename[64];
/** SSE execution unit size (64 or 128; -1 if N/A) */ /** SSE execution unit size (64 or 128; -1 if N/A) */
int32_t sse_size; int32_t sse_size;
/** /**
* contain miscellaneous detection information. Used to test about specifics of * contain miscellaneous detection information. Used to test about specifics of
* certain detected features. See \ref cpu_hint_t "CPU_HINT_*" macros below. * certain detected features. See \ref cpu_hint_t "CPU_HINT_*" macros below.
* @see Hints * @see Hints
*/ */
uint8_t detection_hints[CPU_HINTS_MAX]; uint8_t detection_hints[CPU_HINTS_MAX];
/** contains information about SGX features if the processor, if present */ /** contains information about SGX features if the processor, if present */
struct cpu_sgx_t sgx; struct cpu_sgx_t sgx;
}; };
@ -526,11 +526,11 @@ typedef enum {
* } * }
* @endcode * @endcode
*/ */
typedef enum { typedef enum {
INTEL_SGX1, /*!< SGX1 instructions support */ INTEL_SGX1, /*!< SGX1 instructions support */
INTEL_SGX2, /*!< SGX2 instructions support */ INTEL_SGX2, /*!< SGX2 instructions support */
/* termination: */ /* termination: */
NUM_SGX_FEATURES, NUM_SGX_FEATURES,
} cpu_sgx_feature_t; } cpu_sgx_feature_t;
@ -859,7 +859,7 @@ int cpu_clock_measure(int millis, int quad_check);
* *
* Recommended values - millis = 50, runs = 4. For more robustness, * Recommended values - millis = 50, runs = 4. For more robustness,
* increase the number of runs. * increase the number of runs.
* *
* NOTE: on Bulldozer and later CPUs, the busy-wait cycle runs at 1.4 IPC, thus * NOTE: on Bulldozer and later CPUs, the busy-wait cycle runs at 1.4 IPC, thus
* the results are skewed. This is corrected internally by dividing the resulting * the results are skewed. This is corrected internally by dividing the resulting
* value by 1.4. * value by 1.4.
@ -894,7 +894,7 @@ int cpu_clock(void);
* Describes an EPC (Enclave Page Cache) layout (physical address and size). * Describes an EPC (Enclave Page Cache) layout (physical address and size).
* A CPU may have one or more EPC areas, and information about each is * A CPU may have one or more EPC areas, and information about each is
* fetched via \ref cpuid_get_epc. * fetched via \ref cpuid_get_epc.
*/ */
struct cpu_epc_t { struct cpu_epc_t {
uint64_t start_addr; uint64_t start_addr;
uint64_t length; uint64_t length;

View file

@ -105,7 +105,7 @@ typedef enum _amd_bits_t amd_bits_t;
int cpu_ident_internal(struct cpu_raw_data_t* raw, struct cpu_id_t* data, int cpu_ident_internal(struct cpu_raw_data_t* raw, struct cpu_id_t* data,
struct internal_id_info_t* internal); struct internal_id_info_t* internal);
#endif /* __LIBCPUID_INTERNAL_H__ */ #endif /* __LIBCPUID_INTERNAL_H__ */

View file

@ -77,12 +77,12 @@ void debugf(int verboselevel, const char* format, ...)
static int popcount64(uint64_t mask) static int popcount64(uint64_t mask)
{ {
int num_set_bits = 0; int num_set_bits = 0;
while (mask) { while (mask) {
mask &= mask - 1; mask &= mask - 1;
num_set_bits++; num_set_bits++;
} }
return num_set_bits; return num_set_bits;
} }
@ -100,7 +100,7 @@ static int score(const struct match_entry_t* entry, const struct cpu_id_t* data,
if (entry->l3cache == data->l3_cache ) res += 1; if (entry->l3cache == data->l3_cache ) res += 1;
if (entry->brand_code == brand_code ) res += 2; if (entry->brand_code == brand_code ) res += 2;
if (entry->model_code == model_code ) res += 2; if (entry->model_code == model_code ) res += 2;
res += popcount64(entry->model_bits & bits) * 2; res += popcount64(entry->model_bits & bits) * 2;
return res; return res;
} }
@ -112,11 +112,11 @@ int match_cpu_codename(const struct match_entry_t* matchtable, int count,
int bestscore = -1; int bestscore = -1;
int bestindex = 0; int bestindex = 0;
int i, t; int i, t;
debugf(3, "Matching cpu f:%d, m:%d, s:%d, xf:%d, xm:%d, ncore:%d, l2:%d, bcode:%d, bits:%llu, code:%d\n", debugf(3, "Matching cpu f:%d, m:%d, s:%d, xf:%d, xm:%d, ncore:%d, l2:%d, bcode:%d, bits:%llu, code:%d\n",
data->family, data->model, data->stepping, data->ext_family, data->family, data->model, data->stepping, data->ext_family,
data->ext_model, data->num_cores, data->l2_cache, brand_code, (unsigned long long) bits, model_code); data->ext_model, data->num_cores, data->l2_cache, brand_code, (unsigned long long) bits, model_code);
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
t = score(&matchtable[i], data, brand_code, bits, model_code); t = score(&matchtable[i], data, brand_code, bits, model_code);
debugf(3, "Entry %d, `%s', score %d\n", i, matchtable[i].name, t); debugf(3, "Entry %d, `%s', score %d\n", i, matchtable[i].name, t);

View file

@ -32,7 +32,7 @@ struct feature_map_t {
unsigned bit; unsigned bit;
cpu_feature_t feature; cpu_feature_t feature;
}; };
void match_features(const struct feature_map_t* matchtable, int count, void match_features(const struct feature_map_t* matchtable, int count,
uint32_t reg, struct cpu_id_t* data); uint32_t reg, struct cpu_id_t* data);

View file

@ -1,216 +1,216 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64"> <ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="ReleaseDLL|Win32"> <ProjectConfiguration Include="ReleaseDLL|Win32">
<Configuration>ReleaseDLL</Configuration> <Configuration>ReleaseDLL</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="ReleaseDLL|x64"> <ProjectConfiguration Include="ReleaseDLL|x64">
<Configuration>ReleaseDLL</Configuration> <Configuration>ReleaseDLL</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|x64"> <ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectName>libcpuid</ProjectName> <ProjectName>libcpuid</ProjectName>
<ProjectGuid>{92BDBA37-96E3-4D85-B762-185E4407BB49}</ProjectGuid> <ProjectGuid>{92BDBA37-96E3-4D85-B762-185E4407BB49}</ProjectGuid>
<RootNamespace>libcpuid</RootNamespace> <RootNamespace>libcpuid</RootNamespace>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>NotSet</CharacterSet> <CharacterSet>NotSet</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>NotSet</CharacterSet> <CharacterSet>NotSet</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>NotSet</CharacterSet> <CharacterSet>NotSet</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>NotSet</CharacterSet> <CharacterSet>NotSet</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>NotSet</CharacterSet> <CharacterSet>NotSet</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>NotSet</CharacterSet> <CharacterSet>NotSet</CharacterSet>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" /> <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup> <PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x$(PlatformArchitecture)\$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x$(PlatformArchitecture)\$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x$(PlatformArchitecture)\$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x$(PlatformArchitecture)\$(Configuration)\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">$(ProjectDir)x$(PlatformArchitecture)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x$(PlatformArchitecture)\$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x$(PlatformArchitecture)\$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">x$(PlatformArchitecture)\$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">x$(PlatformArchitecture)\$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x$(PlatformArchitecture)\$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x$(PlatformArchitecture)\$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">x$(PlatformArchitecture)\$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">x$(PlatformArchitecture)\$(Configuration)\</IntDir>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;VERSION="0.4.1";%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;VERSION="0.4.1";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild> <MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat> <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs> <CompileAs>CompileAsC</CompileAs>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;VERSION="0.4.1";%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;VERSION="0.4.1";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs> <CompileAs>CompileAsC</CompileAs>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;VERSION="0.4.1";%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;VERSION="0.4.1";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs> <CompileAs>CompileAsC</CompileAs>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">
<ClCompile> <ClCompile>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;VERSION="0.4.1";%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;VERSION="0.4.1";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs> <CompileAs>CompileAsC</CompileAs>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile> </ClCompile>
<Link> <Link>
<ModuleDefinitionFile>exports.def</ModuleDefinitionFile> <ModuleDefinitionFile>exports.def</ModuleDefinitionFile>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile> <ClCompile>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;VERSION="0.4.1";%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;VERSION="0.4.1";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs> <CompileAs>CompileAsC</CompileAs>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">
<ClCompile> <ClCompile>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;VERSION="0.4.1";%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;VERSION="0.4.1";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs> <CompileAs>CompileAsC</CompileAs>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile> </ClCompile>
<Link> <Link>
<ModuleDefinitionFile>exports.def</ModuleDefinitionFile> <ModuleDefinitionFile>exports.def</ModuleDefinitionFile>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="asm-bits.c" /> <ClCompile Include="asm-bits.c" />
<ClCompile Include="cpuid_main.c" /> <ClCompile Include="cpuid_main.c" />
<ClCompile Include="libcpuid_util.c" /> <ClCompile Include="libcpuid_util.c" />
<ClCompile Include="msrdriver.c" /> <ClCompile Include="msrdriver.c" />
<ClCompile Include="rdmsr.c" /> <ClCompile Include="rdmsr.c" />
<ClCompile Include="rdtsc.c" /> <ClCompile Include="rdtsc.c" />
<ClCompile Include="recog_amd.c" /> <ClCompile Include="recog_amd.c" />
<ClCompile Include="recog_intel.c" /> <ClCompile Include="recog_intel.c" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="asm-bits.h" /> <ClInclude Include="asm-bits.h" />
<ClInclude Include="libcpuid.h" /> <ClInclude Include="libcpuid.h" />
<ClInclude Include="libcpuid_constants.h" /> <ClInclude Include="libcpuid_constants.h" />
<ClInclude Include="libcpuid_types.h" /> <ClInclude Include="libcpuid_types.h" />
<ClInclude Include="libcpuid_util.h" /> <ClInclude Include="libcpuid_util.h" />
<ClInclude Include="recog_amd.h" /> <ClInclude Include="recog_amd.h" />
<ClInclude Include="recog_intel.h" /> <ClInclude Include="recog_intel.h" />
<ClInclude Include="rdtsc.h" /> <ClInclude Include="rdtsc.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<MASM Include="masm-x64.asm"> <MASM Include="masm-x64.asm">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">true</ExcludedFromBuild>
</MASM> </MASM>
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" /> <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
</ImportGroup> </ImportGroup>
</Project> </Project>

View file

@ -1,74 +1,74 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<Filter Include="Source Files"> <Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter> </Filter>
<Filter Include="Header Files"> <Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter> </Filter>
<Filter Include="Resource Files"> <Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions> <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="asm-bits.c"> <ClCompile Include="asm-bits.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="cpuid_main.c"> <ClCompile Include="cpuid_main.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="libcpuid_util.c"> <ClCompile Include="libcpuid_util.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="rdtsc.c"> <ClCompile Include="rdtsc.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="recog_amd.c"> <ClCompile Include="recog_amd.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="recog_intel.c"> <ClCompile Include="recog_intel.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="msrdriver.c"> <ClCompile Include="msrdriver.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="rdmsr.c"> <ClCompile Include="rdmsr.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="asm-bits.h"> <ClInclude Include="asm-bits.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="libcpuid.h"> <ClInclude Include="libcpuid.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="libcpuid_constants.h"> <ClInclude Include="libcpuid_constants.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="libcpuid_types.h"> <ClInclude Include="libcpuid_types.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="libcpuid_util.h"> <ClInclude Include="libcpuid_util.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="recog_amd.h"> <ClInclude Include="recog_amd.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="recog_intel.h"> <ClInclude Include="recog_intel.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="rdtsc.h"> <ClInclude Include="rdtsc.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<MASM Include="masm-x64.asm"> <MASM Include="masm-x64.asm">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</MASM> </MASM>
</ItemGroup> </ItemGroup>
</Project> </Project>

View file

@ -1,226 +1,226 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.10" Version="7.10"
Name="libcpuid" Name="libcpuid"
ProjectGUID="{A517C21D-1467-41B4-966A-7C7FC5E99D62}" ProjectGUID="{A517C21D-1467-41B4-966A-7C7FC5E99D62}"
Keyword="Win32Proj"> Keyword="Win32Proj">
<Platforms> <Platforms>
<Platform <Platform
Name="Win32"/> Name="Win32"/>
</Platforms> </Platforms>
<Configurations> <Configurations>
<Configuration <Configuration
Name="Debug|Win32" Name="Debug|Win32"
OutputDirectory="Debug" OutputDirectory="Debug"
IntermediateDirectory="Debug" IntermediateDirectory="Debug"
ConfigurationType="4" ConfigurationType="4"
CharacterSet="2"> CharacterSet="2">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
PreprocessorDefinitions="VERSION=\&quot;0.4.1\&quot;" PreprocessorDefinitions="VERSION=\&quot;0.4.1\&quot;"
MinimalRebuild="TRUE" MinimalRebuild="TRUE"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="3" RuntimeLibrary="3"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
WarningLevel="3" WarningLevel="3"
Detect64BitPortabilityProblems="TRUE" Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4" DebugInformationFormat="4"
CompileAs="1"/> CompileAs="1"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
OutputFile="$(OutDir)/libcpuid.lib"/> OutputFile="$(OutDir)/libcpuid.lib"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release|Win32" Name="Release|Win32"
OutputDirectory="Release" OutputDirectory="Release"
IntermediateDirectory="Release" IntermediateDirectory="Release"
ConfigurationType="4" ConfigurationType="4"
CharacterSet="2"> CharacterSet="2">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
PreprocessorDefinitions="VERSION=\&quot;0.4.1\&quot;" PreprocessorDefinitions="VERSION=\&quot;0.4.1\&quot;"
RuntimeLibrary="2" RuntimeLibrary="2"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
WarningLevel="3" WarningLevel="3"
Detect64BitPortabilityProblems="TRUE" Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="1"/> CompileAs="1"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
OutputFile="$(OutDir)/libcpuid.lib"/> OutputFile="$(OutDir)/libcpuid.lib"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release DLL|Win32" Name="Release DLL|Win32"
OutputDirectory="$(ConfigurationName)" OutputDirectory="$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)" IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2" ConfigurationType="2"
CharacterSet="2"> CharacterSet="2">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
PreprocessorDefinitions="VERSION=\&quot;0.4.1\&quot;" PreprocessorDefinitions="VERSION=\&quot;0.4.1\&quot;"
RuntimeLibrary="2" RuntimeLibrary="2"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
WarningLevel="3" WarningLevel="3"
Detect64BitPortabilityProblems="TRUE" Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="1"/> CompileAs="1"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
ModuleDefinitionFile="exports.def" ModuleDefinitionFile="exports.def"
GenerateDebugInformation="FALSE" GenerateDebugInformation="FALSE"
SubSystem="2" SubSystem="2"
OptimizeReferences="2" OptimizeReferences="2"
EnableCOMDATFolding="2" EnableCOMDATFolding="2"
ImportLibrary="$(OutDir)/$(TargetName).lib" ImportLibrary="$(OutDir)/$(TargetName).lib"
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
Name="VCPreLinkEventTool"/> Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool"/> Name="VCResourceCompilerTool"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool <Tool
Name="VCManagedWrapperGeneratorTool"/> Name="VCManagedWrapperGeneratorTool"/>
<Tool <Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
</Configurations> </Configurations>
<References> <References>
</References> </References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"> UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
<File <File
RelativePath=".\asm-bits.c"> RelativePath=".\asm-bits.c">
</File> </File>
<File <File
RelativePath=".\cpuid_main.c"> RelativePath=".\cpuid_main.c">
</File> </File>
<File <File
RelativePath=".\exports.def"> RelativePath=".\exports.def">
</File> </File>
<File <File
RelativePath=".\libcpuid_util.c"> RelativePath=".\libcpuid_util.c">
</File> </File>
<File <File
RelativePath=".\msrdriver.c"> RelativePath=".\msrdriver.c">
</File> </File>
<File <File
RelativePath=".\rdmsr.c"> RelativePath=".\rdmsr.c">
</File> </File>
<File <File
RelativePath=".\rdtsc.c"> RelativePath=".\rdtsc.c">
</File> </File>
<File <File
RelativePath=".\recog_amd.c"> RelativePath=".\recog_amd.c">
</File> </File>
<File <File
RelativePath=".\recog_intel.c"> RelativePath=".\recog_intel.c">
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Header Files" Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd" Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"> UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
<File <File
RelativePath=".\amd_code_t.h"> RelativePath=".\amd_code_t.h">
</File> </File>
<File <File
RelativePath=".\asm-bits.h"> RelativePath=".\asm-bits.h">
</File> </File>
<File <File
RelativePath=".\intel_code_t.h"> RelativePath=".\intel_code_t.h">
</File> </File>
<File <File
RelativePath=".\libcpuid.h"> RelativePath=".\libcpuid.h">
</File> </File>
<File <File
RelativePath=".\libcpuid_constants.h"> RelativePath=".\libcpuid_constants.h">
</File> </File>
<File <File
RelativePath=".\libcpuid_internal.h"> RelativePath=".\libcpuid_internal.h">
</File> </File>
<File <File
RelativePath=".\libcpuid_types.h"> RelativePath=".\libcpuid_types.h">
</File> </File>
<File <File
RelativePath=".\libcpuid_util.h"> RelativePath=".\libcpuid_util.h">
</File> </File>
<File <File
RelativePath=".\rdtsc.h"> RelativePath=".\rdtsc.h">
</File> </File>
<File <File
RelativePath=".\recog_amd.h"> RelativePath=".\recog_amd.h">
</File> </File>
<File <File
RelativePath=".\recog_intel.h"> RelativePath=".\recog_intel.h">
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Resource Files" Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"> UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
</Filter> </Filter>
<File <File
RelativePath=".\ReadMe.txt"> RelativePath=".\ReadMe.txt">
</File> </File>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>
</VisualStudioProject> </VisualStudioProject>

View file

@ -1,359 +1,359 @@
.code .code
; procedure exec_cpuid ; procedure exec_cpuid
; Signature: void exec_cpiud(uint32_t *regs) ; Signature: void exec_cpiud(uint32_t *regs)
exec_cpuid Proc exec_cpuid Proc
push rbx push rbx
push rcx push rcx
push rdx push rdx
push rdi push rdi
mov rdi, rcx mov rdi, rcx
mov eax, [rdi] mov eax, [rdi]
mov ebx, [rdi+4] mov ebx, [rdi+4]
mov ecx, [rdi+8] mov ecx, [rdi+8]
mov edx, [rdi+12] mov edx, [rdi+12]
cpuid cpuid
mov [rdi], eax mov [rdi], eax
mov [rdi+4], ebx mov [rdi+4], ebx
mov [rdi+8], ecx mov [rdi+8], ecx
mov [rdi+12], edx mov [rdi+12], edx
pop rdi pop rdi
pop rdx pop rdx
pop rcx pop rcx
pop rbx pop rbx
ret ret
exec_cpuid endp exec_cpuid endp
; procedure cpu_rdtsc ; procedure cpu_rdtsc
; Signature: void cpu_rdtsc(uint64_t *result) ; Signature: void cpu_rdtsc(uint64_t *result)
cpu_rdtsc Proc cpu_rdtsc Proc
push rdx push rdx
rdtsc rdtsc
mov [rcx], eax mov [rcx], eax
mov [rcx+4], edx mov [rcx+4], edx
pop rdx pop rdx
ret ret
cpu_rdtsc endp cpu_rdtsc endp
; procedure busy_sse_loop ; procedure busy_sse_loop
; Signature: void busy_sse_loop(int cycles) ; Signature: void busy_sse_loop(int cycles)
busy_sse_loop Proc busy_sse_loop Proc
; save xmm6 & xmm7 into the shadow area, as Visual C++ 2008 ; save xmm6 & xmm7 into the shadow area, as Visual C++ 2008
; expects that we don't touch them: ; expects that we don't touch them:
movups [rsp + 8], xmm6 movups [rsp + 8], xmm6
movups [rsp + 24], xmm7 movups [rsp + 24], xmm7
xorps xmm0, xmm0 xorps xmm0, xmm0
xorps xmm1, xmm1 xorps xmm1, xmm1
xorps xmm2, xmm2 xorps xmm2, xmm2
xorps xmm3, xmm3 xorps xmm3, xmm3
xorps xmm4, xmm4 xorps xmm4, xmm4
xorps xmm5, xmm5 xorps xmm5, xmm5
xorps xmm6, xmm6 xorps xmm6, xmm6
xorps xmm7, xmm7 xorps xmm7, xmm7
; -- ; --
align 16 align 16
bsLoop: bsLoop:
; 0: ; 0:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 1: ; 1:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 2: ; 2:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 3: ; 3:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 4: ; 4:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 5: ; 5:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 6: ; 6:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 7: ; 7:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 8: ; 8:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 9: ; 9:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 10: ; 10:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 11: ; 11:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 12: ; 12:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 13: ; 13:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 14: ; 14:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 15: ; 15:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 16: ; 16:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 17: ; 17:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 18: ; 18:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 19: ; 19:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 20: ; 20:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 21: ; 21:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 22: ; 22:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 23: ; 23:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 24: ; 24:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 25: ; 25:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 26: ; 26:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 27: ; 27:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 28: ; 28:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 29: ; 29:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 30: ; 30:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; 31: ; 31:
addps xmm0, xmm1 addps xmm0, xmm1
addps xmm1, xmm2 addps xmm1, xmm2
addps xmm2, xmm3 addps xmm2, xmm3
addps xmm3, xmm4 addps xmm3, xmm4
addps xmm4, xmm5 addps xmm4, xmm5
addps xmm5, xmm6 addps xmm5, xmm6
addps xmm6, xmm7 addps xmm6, xmm7
addps xmm7, xmm0 addps xmm7, xmm0
; ---------------------- ; ----------------------
dec ecx dec ecx
jnz bsLoop jnz bsLoop
; restore xmm6 & xmm7: ; restore xmm6 & xmm7:
movups xmm6, [rsp + 8] movups xmm6, [rsp + 8]
movups xmm7, [rsp + 24] movups xmm7, [rsp + 24]
ret ret
busy_sse_loop endp busy_sse_loop endp
END END

View file

@ -191,7 +191,7 @@ int cpu_rdmsr(struct msr_driver_t* driver, uint32_t msr_index, uint64_t* result)
if(ioctl(driver->fd, CPUCTL_RDMSR, &args)) if(ioctl(driver->fd, CPUCTL_RDMSR, &args))
return set_error(ERR_INVMSR); return set_error(ERR_INVMSR);
*result = args.data; *result = args.data;
return 0; return 0;
} }
@ -237,7 +237,7 @@ struct msr_driver_t* cpu_msr_driver_open(void)
set_error(ERR_NO_RDMSR); set_error(ERR_NO_RDMSR);
return NULL; return NULL;
} }
drv = (struct msr_driver_t*) malloc(sizeof(struct msr_driver_t)); drv = (struct msr_driver_t*) malloc(sizeof(struct msr_driver_t));
if (!drv) { if (!drv) {
set_error(ERR_NO_MEM); set_error(ERR_NO_MEM);
@ -250,7 +250,7 @@ struct msr_driver_t* cpu_msr_driver_open(void)
set_error(ERR_EXTRACT); set_error(ERR_EXTRACT);
return NULL; return NULL;
} }
status = load_driver(drv); status = load_driver(drv);
if (!DeleteFile(drv->driver_path)) if (!DeleteFile(drv->driver_path))
debugf(1, "Deleting temporary driver file failed.\n"); debugf(1, "Deleting temporary driver file failed.\n");
@ -285,7 +285,7 @@ static int extract_driver(struct msr_driver_t* driver)
FILE *f; FILE *f;
if (!GetTempPath(sizeof(driver->driver_path), driver->driver_path)) return 0; if (!GetTempPath(sizeof(driver->driver_path), driver->driver_path)) return 0;
strcat(driver->driver_path, "TmpRdr.sys"); strcat(driver->driver_path, "TmpRdr.sys");
f = fopen(driver->driver_path, "wb"); f = fopen(driver->driver_path, "wb");
if (!f) return 0; if (!f) return 0;
if (is_running_x64()) if (is_running_x64())
@ -303,15 +303,15 @@ static BOOL wait_for_service_state(SC_HANDLE hService, DWORD dwDesiredState, SER
if(hService != NULL){ if(hService != NULL){
while(TRUE){ while(TRUE){
fOK = QueryServiceStatus(hService, lpsrvStatus); fOK = QueryServiceStatus(hService, lpsrvStatus);
if(!fOK) if(!fOK)
break; break;
if(lpsrvStatus->dwCurrentState == dwDesiredState) if(lpsrvStatus->dwCurrentState == dwDesiredState)
break; break;
dwWaitHint = lpsrvStatus->dwWaitHint / 10; // Poll 1/10 of the wait hint dwWaitHint = lpsrvStatus->dwWaitHint / 10; // Poll 1/10 of the wait hint
if (dwWaitHint < 1000) if (dwWaitHint < 1000)
dwWaitHint = 1000; // At most once per second dwWaitHint = 1000; // At most once per second
if (dwWaitHint > 10000) if (dwWaitHint > 10000)
dwWaitHint = 10000; // At least every 10 seconds dwWaitHint = 10000; // At least every 10 seconds
Sleep(dwWaitHint); Sleep(dwWaitHint);
} }
@ -372,7 +372,7 @@ static int load_driver(struct msr_driver_t* drv)
default: default:
debugf(1, "Create driver service failed: %d\n", dwLastError); debugf(1, "Create driver service failed: %d\n", dwLastError);
break; break;
} }
} }
if(drv->scDriver != NULL){ if(drv->scDriver != NULL){
if(StartService(drv->scDriver, 0, NULL)){ if(StartService(drv->scDriver, 0, NULL)){
@ -400,7 +400,7 @@ static int load_driver(struct msr_driver_t* drv)
if(fRunning) if(fRunning)
debugf(1, "Driver already running.\n"); debugf(1, "Driver already running.\n");
else else
debugf(1, "Driver loaded.\n"); debugf(1, "Driver loaded.\n");
CloseServiceHandle(drv->scManager); CloseServiceHandle(drv->scManager);
drv->hhDriver = CreateFile(lpszDriverName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0); drv->hhDriver = CreateFile(lpszDriverName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
drv->ovl.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); drv->ovl.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
@ -438,7 +438,7 @@ int cpu_rdmsr(struct msr_driver_t* driver, uint32_t msr_index, uint64_t* result)
if (!driver) if (!driver)
return set_error(ERR_HANDLE); return set_error(ERR_HANDLE);
DeviceIoControl(driver->hhDriver, IOCTL_PROCVIEW_RDMSR, &msr_index, sizeof(int), &msrdata, sizeof(__int64), &dwBytesReturned, &driver->ovl); DeviceIoControl(driver->hhDriver, IOCTL_PROCVIEW_RDMSR, &msr_index, sizeof(int), &msrdata, sizeof(__int64), &dwBytesReturned, &driver->ovl);
GetOverlappedResult(driver->hhDriver, &driver->ovl, &dwBytesReturned, TRUE); GetOverlappedResult(driver->hhDriver, &driver->ovl, &dwBytesReturned, TRUE);
*result = msrdata; *result = msrdata;
return 0; return 0;
} }

View file

@ -78,13 +78,13 @@ void cpu_tsc_unmark(struct cpu_mark_t* mark)
int cpu_clock_by_mark(struct cpu_mark_t* mark) int cpu_clock_by_mark(struct cpu_mark_t* mark)
{ {
uint64_t result; uint64_t result;
/* Check if some subtraction resulted in a negative number: */ /* Check if some subtraction resulted in a negative number: */
if ((mark->tsc >> 63) != 0 || (mark->sys_clock >> 63) != 0) return -1; if ((mark->tsc >> 63) != 0 || (mark->sys_clock >> 63) != 0) return -1;
/* Divide-by-zero check: */ /* Divide-by-zero check: */
if (mark->sys_clock == 0) return -1; if (mark->sys_clock == 0) return -1;
/* Check if the result fits in 32bits */ /* Check if the result fits in 32bits */
result = mark->tsc / mark->sys_clock; result = mark->tsc / mark->sys_clock;
if (result > (uint64_t) 0x7fffffff) return -1; if (result > (uint64_t) 0x7fffffff) return -1;
@ -97,16 +97,16 @@ int cpu_clock_by_os(void)
HKEY key; HKEY key;
DWORD result; DWORD result;
DWORD size = 4; DWORD size = 4;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0"), 0, KEY_READ, &key) != ERROR_SUCCESS) if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0"), 0, KEY_READ, &key) != ERROR_SUCCESS)
return -1; return -1;
if (RegQueryValueEx(key, TEXT("~MHz"), NULL, NULL, (LPBYTE) &result, (LPDWORD) &size) != ERROR_SUCCESS) { if (RegQueryValueEx(key, TEXT("~MHz"), NULL, NULL, (LPBYTE) &result, (LPDWORD) &size) != ERROR_SUCCESS) {
RegCloseKey(key); RegCloseKey(key);
return -1; return -1;
} }
RegCloseKey(key); RegCloseKey(key);
return (int)result; return (int)result;
} }
#else #else
@ -129,10 +129,10 @@ int cpu_clock_by_os(void)
FILE *f; FILE *f;
char line[1024], *s; char line[1024], *s;
int result; int result;
f = fopen("/proc/cpuinfo", "rt"); f = fopen("/proc/cpuinfo", "rt");
if (!f) return -1; if (!f) return -1;
while (fgets(line, sizeof(line), f)) { while (fgets(line, sizeof(line), f)) {
if (!strncmp(line, "cpu MHz", 7)) { if (!strncmp(line, "cpu MHz", 7)) {
s = strchr(line, ':'); s = strchr(line, ':');
@ -184,7 +184,7 @@ int cpu_clock_measure(int millis, int quad_check)
struct cpu_mark_t begin[4], end[4], temp, temp2; struct cpu_mark_t begin[4], end[4], temp, temp2;
int results[4], cycles, n, k, i, j, bi, bj, mdiff, diff, _zero = 0; int results[4], cycles, n, k, i, j, bi, bj, mdiff, diff, _zero = 0;
uint64_t tl; uint64_t tl;
if (millis < 1) return -1; if (millis < 1) return -1;
tl = millis * (uint64_t) 1000; tl = millis * (uint64_t) 1000;
if (quad_check) if (quad_check)
@ -301,7 +301,7 @@ int cpu_clock_by_ic(int millis, int runs)
} while (t1 - t0 < tl * (uint64_t) 8); } while (t1 - t0 < tl * (uint64_t) 8);
// cpu_Hz = cycles_inner * cycles_outer * 256 / (t1 - t0) * 1000000 // cpu_Hz = cycles_inner * cycles_outer * 256 / (t1 - t0) * 1000000
debugf(2, "c = %d, td = %d\n", c, (int) (t1 - t0)); debugf(2, "c = %d, td = %d\n", c, (int) (t1 - t0));
hz = ((uint64_t) cycles_inner * (uint64_t) 256 + 12) * hz = ((uint64_t) cycles_inner * (uint64_t) 256 + 12) *
(uint64_t) cycles_outer * (uint64_t) multiplier_numerator * (uint64_t) c * (uint64_t) 1000000 (uint64_t) cycles_outer * (uint64_t) multiplier_numerator * (uint64_t) c * (uint64_t) 1000000
/ ((t1 - t0) * (uint64_t) multiplier_denom); / ((t1 - t0) * (uint64_t) multiplier_denom);
cur_value = (int) (hz / 1000000); cur_value = (int) (hz / 1000000);

View file

@ -48,47 +48,47 @@ struct amd_code_and_bits_t {
const struct match_entry_t cpudb_amd[] = { const struct match_entry_t cpudb_amd[] = {
// F M S EF EM #cores L2$ L3$ BC ModelBits ModelCode Name // F M S EF EM #cores L2$ L3$ BC ModelBits ModelCode Name
{ -1, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown AMD CPU" }, { -1, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown AMD CPU" },
/* 486 and the likes */ /* 486 and the likes */
{ 4, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown AMD 486" }, { 4, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown AMD 486" },
{ 4, 3, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "AMD 486DX2" }, { 4, 3, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "AMD 486DX2" },
{ 4, 7, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "AMD 486DX2WB" }, { 4, 7, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "AMD 486DX2WB" },
{ 4, 8, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "AMD 486DX4" }, { 4, 8, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "AMD 486DX4" },
{ 4, 9, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "AMD 486DX4WB" }, { 4, 9, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "AMD 486DX4WB" },
/* Pentia clones */ /* Pentia clones */
{ 5, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown AMD 586" }, { 5, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown AMD 586" },
{ 5, 0, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K5" }, { 5, 0, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K5" },
{ 5, 1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K5" }, { 5, 1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K5" },
{ 5, 2, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K5" }, { 5, 2, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K5" },
{ 5, 3, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K5" }, { 5, 3, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K5" },
/* The K6 */ /* The K6 */
{ 5, 6, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K6" }, { 5, 6, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K6" },
{ 5, 7, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K6" }, { 5, 7, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K6" },
{ 5, 8, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K6-2" }, { 5, 8, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K6-2" },
{ 5, 9, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K6-III" }, { 5, 9, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K6-III" },
{ 5, 10, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown K6" }, { 5, 10, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown K6" },
{ 5, 11, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown K6" }, { 5, 11, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown K6" },
{ 5, 12, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown K6" }, { 5, 12, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown K6" },
{ 5, 13, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K6-2+" }, { 5, 13, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "K6-2+" },
/* Athlon et al. */ /* Athlon et al. */
{ 6, 1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Athlon (Slot-A)" }, { 6, 1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Athlon (Slot-A)" },
{ 6, 2, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Athlon (Slot-A)" }, { 6, 2, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Athlon (Slot-A)" },
{ 6, 3, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Duron (Spitfire)" }, { 6, 3, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Duron (Spitfire)" },
{ 6, 4, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Athlon (ThunderBird)" }, { 6, 4, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Athlon (ThunderBird)" },
{ 6, 6, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Athlon" }, { 6, 6, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Athlon" },
{ 6, 6, -1, -1, -1, 1, -1, -1, NC, ATHLON_ , 0, "Athlon (Palomino)" }, { 6, 6, -1, -1, -1, 1, -1, -1, NC, ATHLON_ , 0, "Athlon (Palomino)" },
{ 6, 6, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_MP_ , 0, "Athlon MP (Palomino)" }, { 6, 6, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_MP_ , 0, "Athlon MP (Palomino)" },
{ 6, 6, -1, -1, -1, 1, -1, -1, NC, DURON_ , 0, "Duron (Palomino)" }, { 6, 6, -1, -1, -1, 1, -1, -1, NC, DURON_ , 0, "Duron (Palomino)" },
{ 6, 6, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_XP_ , 0, "Athlon XP" }, { 6, 6, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_XP_ , 0, "Athlon XP" },
{ 6, 7, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Athlon XP" }, { 6, 7, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Athlon XP" },
{ 6, 7, -1, -1, -1, 1, -1, -1, NC, DURON_ , 0, "Duron (Morgan)" }, { 6, 7, -1, -1, -1, 1, -1, -1, NC, DURON_ , 0, "Duron (Morgan)" },
{ 6, 8, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Athlon XP" }, { 6, 8, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Athlon XP" },
{ 6, 8, -1, -1, -1, 1, -1, -1, NC, ATHLON_ , 0, "Athlon XP (Thoroughbred)" }, { 6, 8, -1, -1, -1, 1, -1, -1, NC, ATHLON_ , 0, "Athlon XP (Thoroughbred)" },
{ 6, 8, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_XP_ , 0, "Athlon XP (Thoroughbred)" }, { 6, 8, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_XP_ , 0, "Athlon XP (Thoroughbred)" },
@ -99,7 +99,7 @@ const struct match_entry_t cpudb_amd[] = {
{ 6, 8, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_MP_ , 0, "Athlon MP (Thoroughbred)" }, { 6, 8, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_MP_ , 0, "Athlon MP (Thoroughbred)" },
{ 6, 8, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_XP_|_M_ , 0, "Mobile Athlon (T-Bred)" }, { 6, 8, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_XP_|_M_ , 0, "Mobile Athlon (T-Bred)" },
{ 6, 8, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_XP_|_M_|_LV_, 0, "Mobile Athlon (T-Bred)" }, { 6, 8, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_XP_|_M_|_LV_, 0, "Mobile Athlon (T-Bred)" },
{ 6, 10, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Athlon XP (Barton)" }, { 6, 10, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Athlon XP (Barton)" },
{ 6, 10, -1, -1, -1, 1, 512, -1, NC, ATHLON_|_XP_ , 0, "Athlon XP (Barton)" }, { 6, 10, -1, -1, -1, 1, 512, -1, NC, ATHLON_|_XP_ , 0, "Athlon XP (Barton)" },
{ 6, 10, -1, -1, -1, 1, 512, -1, NC, SEMPRON_ , 0, "Sempron (Barton)" }, { 6, 10, -1, -1, -1, 1, 512, -1, NC, SEMPRON_ , 0, "Sempron (Barton)" },
@ -108,11 +108,11 @@ const struct match_entry_t cpudb_amd[] = {
{ 6, 10, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_MP_ , 0, "Athlon MP (Barton)" }, { 6, 10, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_MP_ , 0, "Athlon MP (Barton)" },
{ 6, 10, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_XP_|_M_ , 0, "Mobile Athlon (Barton)" }, { 6, 10, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_XP_|_M_ , 0, "Mobile Athlon (Barton)" },
{ 6, 10, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_XP_|_M_|_LV_, 0, "Mobile Athlon (Barton)" }, { 6, 10, -1, -1, -1, 1, -1, -1, NC, ATHLON_|_XP_|_M_|_LV_, 0, "Mobile Athlon (Barton)" },
/* K8 Architecture */ /* K8 Architecture */
{ 15, -1, -1, 15, -1, 1, -1, -1, NC, 0 , 0, "Unknown K8" }, { 15, -1, -1, 15, -1, 1, -1, -1, NC, 0 , 0, "Unknown K8" },
{ 15, -1, -1, 16, -1, 1, -1, -1, NC, 0 , 0, "Unknown K9" }, { 15, -1, -1, 16, -1, 1, -1, -1, NC, 0 , 0, "Unknown K9" },
{ 15, -1, -1, 15, -1, 1, -1, -1, NC, 0 , 0, "Unknown A64" }, { 15, -1, -1, 15, -1, 1, -1, -1, NC, 0 , 0, "Unknown A64" },
{ 15, -1, -1, 15, -1, 1, -1, -1, NC, OPTERON_ , 0, "Opteron" }, { 15, -1, -1, 15, -1, 1, -1, -1, NC, OPTERON_ , 0, "Opteron" },
{ 15, -1, -1, 15, -1, 2, -1, -1, NC, OPTERON_|_X2 , 0, "Opteron (Dual Core)" }, { 15, -1, -1, 15, -1, 2, -1, -1, NC, OPTERON_|_X2 , 0, "Opteron (Dual Core)" },
@ -141,22 +141,22 @@ const struct match_entry_t cpudb_amd[] = {
{ 15, -1, -1, 15, 0x27, 1, 512, -1, NC, ATHLON_|_64_ , 0, "Athlon 64 (San Diego/512K)" }, { 15, -1, -1, 15, 0x27, 1, 512, -1, NC, ATHLON_|_64_ , 0, "Athlon 64 (San Diego/512K)" },
{ 15, -1, -1, 15, 0x37, 1, 512, -1, NC, ATHLON_|_64_ , 0, "Athlon 64 (San Diego/512K)" }, { 15, -1, -1, 15, 0x37, 1, 512, -1, NC, ATHLON_|_64_ , 0, "Athlon 64 (San Diego/512K)" },
{ 15, -1, -1, 15, 0x04, 1, 512, -1, NC, ATHLON_|_64_ , 0, "Athlon 64 (ClawHammer/512K)" }, { 15, -1, -1, 15, 0x04, 1, 512, -1, NC, ATHLON_|_64_ , 0, "Athlon 64 (ClawHammer/512K)" },
{ 15, -1, -1, 15, 0x5f, 1, 1024, -1, NC, ATHLON_|_64_ , 0, "Athlon 64 (Orleans/1024K)" }, { 15, -1, -1, 15, 0x5f, 1, 1024, -1, NC, ATHLON_|_64_ , 0, "Athlon 64 (Orleans/1024K)" },
{ 15, -1, -1, 15, 0x27, 1, 1024, -1, NC, ATHLON_|_64_ , 0, "Athlon 64 (San Diego/1024K)" }, { 15, -1, -1, 15, 0x27, 1, 1024, -1, NC, ATHLON_|_64_ , 0, "Athlon 64 (San Diego/1024K)" },
{ 15, -1, -1, 15, 0x04, 1, 1024, -1, NC, ATHLON_|_64_ , 0, "Athlon 64 (ClawHammer/1024K)" }, { 15, -1, -1, 15, 0x04, 1, 1024, -1, NC, ATHLON_|_64_ , 0, "Athlon 64 (ClawHammer/1024K)" },
{ 15, -1, -1, 15, 0x4b, 2, 256, -1, NC, SEMPRON_ , 0, "Athlon 64 X2 (Windsor/256K)" }, { 15, -1, -1, 15, 0x4b, 2, 256, -1, NC, SEMPRON_ , 0, "Athlon 64 X2 (Windsor/256K)" },
{ 15, -1, -1, 15, 0x23, 2, 512, -1, NC, ATHLON_|_64_|_X2 , 0, "Athlon 64 X2 (Toledo/512K)" }, { 15, -1, -1, 15, 0x23, 2, 512, -1, NC, ATHLON_|_64_|_X2 , 0, "Athlon 64 X2 (Toledo/512K)" },
{ 15, -1, -1, 15, 0x4b, 2, 512, -1, NC, ATHLON_|_64_|_X2 , 0, "Athlon 64 X2 (Windsor/512K)" }, { 15, -1, -1, 15, 0x4b, 2, 512, -1, NC, ATHLON_|_64_|_X2 , 0, "Athlon 64 X2 (Windsor/512K)" },
{ 15, -1, -1, 15, 0x43, 2, 512, -1, NC, ATHLON_|_64_|_X2 , 0, "Athlon 64 X2 (Windsor/512K)" }, { 15, -1, -1, 15, 0x43, 2, 512, -1, NC, ATHLON_|_64_|_X2 , 0, "Athlon 64 X2 (Windsor/512K)" },
{ 15, -1, -1, 15, 0x6b, 2, 512, -1, NC, ATHLON_|_64_|_X2 , 0, "Athlon 64 X2 (Brisbane/512K)" }, { 15, -1, -1, 15, 0x6b, 2, 512, -1, NC, ATHLON_|_64_|_X2 , 0, "Athlon 64 X2 (Brisbane/512K)" },
{ 15, -1, -1, 15, 0x2b, 2, 512, -1, NC, ATHLON_|_64_|_X2 , 0, "Athlon 64 X2 (Manchester/512K)"}, { 15, -1, -1, 15, 0x2b, 2, 512, -1, NC, ATHLON_|_64_|_X2 , 0, "Athlon 64 X2 (Manchester/512K)"},
{ 15, -1, -1, 15, 0x23, 2, 1024, -1, NC, ATHLON_|_64_|_X2 , 0, "Athlon 64 X2 (Toledo/1024K)" }, { 15, -1, -1, 15, 0x23, 2, 1024, -1, NC, ATHLON_|_64_|_X2 , 0, "Athlon 64 X2 (Toledo/1024K)" },
{ 15, -1, -1, 15, 0x43, 2, 1024, -1, NC, ATHLON_|_64_|_X2 , 0, "Athlon 64 X2 (Windsor/1024K)" }, { 15, -1, -1, 15, 0x43, 2, 1024, -1, NC, ATHLON_|_64_|_X2 , 0, "Athlon 64 X2 (Windsor/1024K)" },
{ 15, -1, -1, 15, 0x08, 1, 128, -1, NC, MOBILE_|SEMPRON_ , 0, "Mobile Sempron 64 (Dublin/128K)"}, { 15, -1, -1, 15, 0x08, 1, 128, -1, NC, MOBILE_|SEMPRON_ , 0, "Mobile Sempron 64 (Dublin/128K)"},
{ 15, -1, -1, 15, 0x08, 1, 256, -1, NC, MOBILE_|SEMPRON_ , 0, "Mobile Sempron 64 (Dublin/256K)"}, { 15, -1, -1, 15, 0x08, 1, 256, -1, NC, MOBILE_|SEMPRON_ , 0, "Mobile Sempron 64 (Dublin/256K)"},
{ 15, -1, -1, 15, 0x0c, 1, 256, -1, NC, SEMPRON_ , 0, "Sempron 64 (Paris)" }, { 15, -1, -1, 15, 0x0c, 1, 256, -1, NC, SEMPRON_ , 0, "Sempron 64 (Paris)" },
@ -181,7 +181,7 @@ const struct match_entry_t cpudb_amd[] = {
{ 15, -1, -1, 15, 0x4c, 1, 256, -1, NC, MOBILE_| SEMPRON_ , 0, "Mobile Sempron 64 (Keene/256K)"}, { 15, -1, -1, 15, 0x4c, 1, 256, -1, NC, MOBILE_| SEMPRON_ , 0, "Mobile Sempron 64 (Keene/256K)"},
{ 15, -1, -1, 15, 0x4c, 1, 512, -1, NC, MOBILE_| SEMPRON_ , 0, "Mobile Sempron 64 (Keene/512K)"}, { 15, -1, -1, 15, 0x4c, 1, 512, -1, NC, MOBILE_| SEMPRON_ , 0, "Mobile Sempron 64 (Keene/512K)"},
{ 15, -1, -1, 15, -1, 2, -1, -1, NC, SEMPRON_ , 0, "Sempron Dual Core" }, { 15, -1, -1, 15, -1, 2, -1, -1, NC, SEMPRON_ , 0, "Sempron Dual Core" },
{ 15, -1, -1, 15, 0x24, 1, 512, -1, NC, TURION_|_64_ , 0, "Turion 64 (Lancaster/512K)" }, { 15, -1, -1, 15, 0x24, 1, 512, -1, NC, TURION_|_64_ , 0, "Turion 64 (Lancaster/512K)" },
{ 15, -1, -1, 15, 0x24, 1, 1024, -1, NC, TURION_|_64_ , 0, "Turion 64 (Lancaster/1024K)" }, { 15, -1, -1, 15, 0x24, 1, 1024, -1, NC, TURION_|_64_ , 0, "Turion 64 (Lancaster/1024K)" },
{ 15, -1, -1, 15, 0x48, 2, 256, -1, NC, TURION_|_X2 , 0, "Turion X2 (Taylor)" }, { 15, -1, -1, 15, 0x48, 2, 256, -1, NC, TURION_|_X2 , 0, "Turion X2 (Taylor)" },
@ -373,7 +373,7 @@ static void decode_amd_cache_info(struct cpu_raw_data_t* raw, struct cpu_id_t* d
0, 1, 2, 0, 4, 0, 8, 0, 16, 16, 32, 48, 64, 96, 128, 255 0, 1, 2, 0, 4, 0, 8, 0, 16, 16, 32, 48, 64, 96, 128, 255
}; };
unsigned n = raw->ext_cpuid[0][0]; unsigned n = raw->ext_cpuid[0][0];
if (n >= 0x80000005) { if (n >= 0x80000005) {
data->l1_data_cache = (raw->ext_cpuid[5][2] >> 24) & 0xff; data->l1_data_cache = (raw->ext_cpuid[5][2] >> 24) & 0xff;
data->l1_assoc = (raw->ext_cpuid[5][2] >> 16) & 0xff; data->l1_assoc = (raw->ext_cpuid[5][2] >> 16) & 0xff;
@ -384,7 +384,7 @@ static void decode_amd_cache_info(struct cpu_raw_data_t* raw, struct cpu_id_t* d
data->l2_cache = (raw->ext_cpuid[6][2] >> 16) & 0xffff; data->l2_cache = (raw->ext_cpuid[6][2] >> 16) & 0xffff;
data->l2_assoc = assoc_table[(raw->ext_cpuid[6][2] >> 12) & 0xf]; data->l2_assoc = assoc_table[(raw->ext_cpuid[6][2] >> 12) & 0xf];
data->l2_cacheline = (raw->ext_cpuid[6][2]) & 0xff; data->l2_cacheline = (raw->ext_cpuid[6][2]) & 0xff;
l3_result = (raw->ext_cpuid[6][3] >> 18); l3_result = (raw->ext_cpuid[6][3] >> 18);
if (l3_result > 0) { if (l3_result > 0) {
l3_result = 512 * l3_result; /* AMD spec says it's a range, l3_result = 512 * l3_result; /* AMD spec says it's a range,
@ -401,7 +401,7 @@ static void decode_amd_cache_info(struct cpu_raw_data_t* raw, struct cpu_id_t* d
static void decode_amd_number_of_cores(struct cpu_raw_data_t* raw, struct cpu_id_t* data) static void decode_amd_number_of_cores(struct cpu_raw_data_t* raw, struct cpu_id_t* data)
{ {
int logical_cpus = -1, num_cores = -1; int logical_cpus = -1, num_cores = -1;
if (raw->basic_cpuid[0][0] >= 1) { if (raw->basic_cpuid[0][0] >= 1) {
logical_cpus = (raw->basic_cpuid[1][1] >> 16) & 0xff; logical_cpus = (raw->basic_cpuid[1][1] >> 16) & 0xff;
if (raw->ext_cpuid[0][0] >= 8) { if (raw->ext_cpuid[0][0] >= 8) {

View file

@ -62,7 +62,7 @@ typedef enum _intel_model_t intel_model_t;
const struct match_entry_t cpudb_intel[] = { const struct match_entry_t cpudb_intel[] = {
// F M S EF EM #cores L2$ L3$ BC ModelBits ModelCode Name // F M S EF EM #cores L2$ L3$ BC ModelBits ModelCode Name
{ -1, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Intel CPU" }, { -1, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Intel CPU" },
/* i486 */ /* i486 */
{ 4, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown i486" }, { 4, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown i486" },
{ 4, 0, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "i486 DX-25/33" }, { 4, 0, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "i486 DX-25/33" },
@ -74,7 +74,7 @@ const struct match_entry_t cpudb_intel[] = {
{ 4, 7, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "i486 DX2 WriteBack" }, { 4, 7, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "i486 DX2 WriteBack" },
{ 4, 8, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "i486 DX4" }, { 4, 8, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "i486 DX4" },
{ 4, 9, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "i486 DX4 WriteBack" }, { 4, 9, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "i486 DX4 WriteBack" },
/* All Pentia: /* All Pentia:
Pentium 1 */ Pentium 1 */
{ 5, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Pentium" }, { 5, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Pentium" },
@ -85,7 +85,7 @@ const struct match_entry_t cpudb_intel[] = {
{ 5, 4, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium 1 (0.35u)" }, { 5, 4, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium 1 (0.35u)" },
{ 5, 7, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium 1 (0.35u)" }, { 5, 7, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium 1 (0.35u)" },
{ 5, 8, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium MMX (0.25u)" }, { 5, 8, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium MMX (0.25u)" },
/* Pentium 2 / 3 / M / Conroe / whatsnext - all P6 based. */ /* Pentium 2 / 3 / M / Conroe / whatsnext - all P6 based. */
{ 6, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown P6" }, { 6, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown P6" },
{ 6, 0, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium Pro" }, { 6, 0, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium Pro" },
@ -94,27 +94,27 @@ const struct match_entry_t cpudb_intel[] = {
{ 6, 5, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium II (Deschutes)" }, { 6, 5, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium II (Deschutes)" },
{ 6, 5, -1, -1, -1, 1, -1, -1, NC, MOBILE_|PENTIUM_, 0, "Mobile Pentium II (Tonga)"}, { 6, 5, -1, -1, -1, 1, -1, -1, NC, MOBILE_|PENTIUM_, 0, "Mobile Pentium II (Tonga)"},
{ 6, 6, -1, -1, -1, 1, -1, -1, NC,0 , 0, "Pentium II (Dixon)" }, { 6, 6, -1, -1, -1, 1, -1, -1, NC,0 , 0, "Pentium II (Dixon)" },
{ 6, 3, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-II Xeon (Klamath)" }, { 6, 3, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-II Xeon (Klamath)" },
{ 6, 5, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-II Xeon (Drake)" }, { 6, 5, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-II Xeon (Drake)" },
{ 6, 6, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-II Xeon (Dixon)" }, { 6, 6, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-II Xeon (Dixon)" },
{ 6, 5, -1, -1, -1, 1, -1, -1, NC, CELERON_ , 0, "P-II Celeron (Covington)" }, { 6, 5, -1, -1, -1, 1, -1, -1, NC, CELERON_ , 0, "P-II Celeron (Covington)" },
{ 6, 6, -1, -1, -1, 1, -1, -1, NC, CELERON_ , 0, "P-II Celeron (Mendocino)" }, { 6, 6, -1, -1, -1, 1, -1, -1, NC, CELERON_ , 0, "P-II Celeron (Mendocino)" },
/* -------------------------------------------------- */ /* -------------------------------------------------- */
{ 6, 7, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium III (Katmai)" }, { 6, 7, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium III (Katmai)" },
{ 6, 8, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium III (Coppermine)"}, { 6, 8, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium III (Coppermine)"},
{ 6, 10, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium III (Coppermine)"}, { 6, 10, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium III (Coppermine)"},
{ 6, 11, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium III (Tualatin)" }, { 6, 11, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium III (Tualatin)" },
{ 6, 11, -1, -1, -1, 1, 512, -1, NC, 0 , 0, "Pentium III (Tualatin)" }, { 6, 11, -1, -1, -1, 1, 512, -1, NC, 0 , 0, "Pentium III (Tualatin)" },
{ 6, 7, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Tanner)" }, { 6, 7, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Tanner)" },
{ 6, 8, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Cascades)" }, { 6, 8, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Cascades)" },
{ 6, 10, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Cascades)" }, { 6, 10, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Cascades)" },
{ 6, 11, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Tualatin)" }, { 6, 11, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Tualatin)" },
{ 6, 7, -1, -1, -1, 1, 128, -1, NC, CELERON_ , 0, "P-III Celeron (Katmai)" }, { 6, 7, -1, -1, -1, 1, 128, -1, NC, CELERON_ , 0, "P-III Celeron (Katmai)" },
{ 6, 8, -1, -1, -1, 1, 128, -1, NC, CELERON_ , 0, "P-III Celeron (Coppermine)" }, { 6, 8, -1, -1, -1, 1, 128, -1, NC, CELERON_ , 0, "P-III Celeron (Coppermine)" },
{ 6, 10, -1, -1, -1, 1, 128, -1, NC, CELERON_ , 0, "P-III Celeron (Coppermine)" }, { 6, 10, -1, -1, -1, 1, 128, -1, NC, CELERON_ , 0, "P-III Celeron (Coppermine)" },
@ -125,7 +125,7 @@ const struct match_entry_t cpudb_intel[] = {
{ 15, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Pentium 4" }, { 15, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Pentium 4" },
{ 15, -1, -1, 15, -1, 1, -1, -1, NC, CELERON_ , 0, "Unknown P-4 Celeron" }, { 15, -1, -1, 15, -1, 1, -1, -1, NC, CELERON_ , 0, "Unknown P-4 Celeron" },
{ 15, -1, -1, 15, -1, 1, -1, -1, NC, XEON_ , 0, "Unknown Xeon" }, { 15, -1, -1, 15, -1, 1, -1, -1, NC, XEON_ , 0, "Unknown Xeon" },
{ 15, 0, -1, 15, -1, 1, -1, -1, NC, PENTIUM_ , 0, "Pentium 4 (Willamette)" }, { 15, 0, -1, 15, -1, 1, -1, -1, NC, PENTIUM_ , 0, "Pentium 4 (Willamette)" },
{ 15, 1, -1, 15, -1, 1, -1, -1, NC, PENTIUM_ , 0, "Pentium 4 (Willamette)" }, { 15, 1, -1, 15, -1, 1, -1, -1, NC, PENTIUM_ , 0, "Pentium 4 (Willamette)" },
{ 15, 2, -1, 15, -1, 1, -1, -1, NC, PENTIUM_ , 0, "Pentium 4 (Northwood)" }, { 15, 2, -1, 15, -1, 1, -1, -1, NC, PENTIUM_ , 0, "Pentium 4 (Northwood)" },
@ -138,7 +138,7 @@ const struct match_entry_t cpudb_intel[] = {
{ 15, 3, -1, 15, -1, 1, -1, -1, NC, MOBILE_|PENTIUM_, 0, "Mobile P-4 (Prescott)" }, { 15, 3, -1, 15, -1, 1, -1, -1, NC, MOBILE_|PENTIUM_, 0, "Mobile P-4 (Prescott)" },
{ 15, 4, -1, 15, -1, 1, -1, -1, NC, MOBILE_|PENTIUM_, 0, "Mobile P-4 (Prescott)" }, { 15, 4, -1, 15, -1, 1, -1, -1, NC, MOBILE_|PENTIUM_, 0, "Mobile P-4 (Prescott)" },
{ 15, 6, -1, 15, -1, 1, -1, -1, NC, MOBILE_|PENTIUM_, 0, "Mobile P-4 (Cedar Mill)" }, { 15, 6, -1, 15, -1, 1, -1, -1, NC, MOBILE_|PENTIUM_, 0, "Mobile P-4 (Cedar Mill)" },
/* server CPUs */ /* server CPUs */
{ 15, 0, -1, 15, -1, 1, -1, -1, NC, XEON_ , 0, "Xeon (Foster)" }, { 15, 0, -1, 15, -1, 1, -1, -1, NC, XEON_ , 0, "Xeon (Foster)" },
{ 15, 1, -1, 15, -1, 1, -1, -1, NC, XEON_ , 0, "Xeon (Foster)" }, { 15, 1, -1, 15, -1, 1, -1, -1, NC, XEON_ , 0, "Xeon (Foster)" },
@ -150,7 +150,7 @@ const struct match_entry_t cpudb_intel[] = {
{ 15, 4, -1, 15, -1, 1, -1, -1, NC, XEON_|_MP_ , 0, "Xeon (Cranford)" }, { 15, 4, -1, 15, -1, 1, -1, -1, NC, XEON_|_MP_ , 0, "Xeon (Cranford)" },
{ 15, 4, -1, 15, -1, 1, -1, -1, POTOMAC, XEON_ , 0, "Xeon (Potomac)" }, { 15, 4, -1, 15, -1, 1, -1, -1, POTOMAC, XEON_ , 0, "Xeon (Potomac)" },
{ 15, 6, -1, 15, -1, 1, -1, -1, NC, XEON_ , 0, "Xeon (Dempsey)" }, { 15, 6, -1, 15, -1, 1, -1, -1, NC, XEON_ , 0, "Xeon (Dempsey)" },
/* Pentium Ds */ /* Pentium Ds */
{ 15, 4, 4, 15, -1, 1, -1, -1, NC, 0 , 0, "Pentium D (SmithField)" }, { 15, 4, 4, 15, -1, 1, -1, -1, NC, 0 , 0, "Pentium D (SmithField)" },
{ 15, 4, -1, 15, -1, 1, -1, -1, PENTIUM_D, 0 , 0, "Pentium D (SmithField)" }, { 15, 4, -1, 15, -1, 1, -1, -1, PENTIUM_D, 0 , 0, "Pentium D (SmithField)" },
@ -163,10 +163,10 @@ const struct match_entry_t cpudb_intel[] = {
{ 15, 3, -1, 15, -1, 1, -1, -1, NC, CELERON_ , 0, "P-4 Celeron D (Prescott)" }, { 15, 3, -1, 15, -1, 1, -1, -1, NC, CELERON_ , 0, "P-4 Celeron D (Prescott)" },
{ 15, 4, -1, 15, -1, 1, -1, -1, NC, CELERON_ , 0, "P-4 Celeron D (Prescott)" }, { 15, 4, -1, 15, -1, 1, -1, -1, NC, CELERON_ , 0, "P-4 Celeron D (Prescott)" },
{ 15, 6, -1, 15, -1, 1, -1, -1, NC, CELERON_ , 0, "P-4 Celeron D (Cedar Mill)" }, { 15, 6, -1, 15, -1, 1, -1, -1, NC, CELERON_ , 0, "P-4 Celeron D (Cedar Mill)" },
/* -------------------------------------------------- */ /* -------------------------------------------------- */
/* Intel Core microarchitecture - P6-based */ /* Intel Core microarchitecture - P6-based */
{ 6, 9, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Pentium M" }, { 6, 9, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Pentium M" },
{ 6, 9, -1, -1, -1, 1, -1, -1, PENTIUM_M, 0 , 0, "Unknown Pentium M" }, { 6, 9, -1, -1, -1, 1, -1, -1, PENTIUM_M, 0 , 0, "Unknown Pentium M" },
{ 6, 9, -1, -1, -1, 1, -1, -1, NC, PENTIUM_ , 0, "Pentium M (Banias)" }, { 6, 9, -1, -1, -1, 1, -1, -1, NC, PENTIUM_ , 0, "Pentium M (Banias)" },
@ -175,23 +175,23 @@ const struct match_entry_t cpudb_intel[] = {
{ 6, 13, -1, -1, -1, 1, -1, -1, NC, PENTIUM_ , 0, "Pentium M (Dothan)" }, { 6, 13, -1, -1, -1, 1, -1, -1, NC, PENTIUM_ , 0, "Pentium M (Dothan)" },
{ 6, 13, -1, -1, -1, 1, -1, -1, PENTIUM_M, 0 , 0, "Pentium M (Dothan)" }, { 6, 13, -1, -1, -1, 1, -1, -1, PENTIUM_M, 0 , 0, "Pentium M (Dothan)" },
{ 6, 13, -1, -1, -1, 1, -1, -1, NC, CELERON_ , 0, "Celeron M" }, { 6, 13, -1, -1, -1, 1, -1, -1, NC, CELERON_ , 0, "Celeron M" },
{ 6, 12, -1, -1, -1, -1, -1, -1, NC, ATOM_ , 0, "Unknown Atom" }, { 6, 12, -1, -1, -1, -1, -1, -1, NC, ATOM_ , 0, "Unknown Atom" },
{ 6, 12, -1, -1, -1, -1, -1, -1, DIAMONDVILLE,ATOM_, 0, "Atom (Diamondville)" }, { 6, 12, -1, -1, -1, -1, -1, -1, DIAMONDVILLE,ATOM_, 0, "Atom (Diamondville)" },
{ 6, 12, -1, -1, -1, -1, -1, -1, SILVERTHORNE,ATOM_, 0, "Atom (Silverthorne)" }, { 6, 12, -1, -1, -1, -1, -1, -1, SILVERTHORNE,ATOM_, 0, "Atom (Silverthorne)" },
{ 6, 12, -1, -1, -1, -1, -1, -1, CEDARVIEW, ATOM_ , 0, "Atom (Cedarview)" }, { 6, 12, -1, -1, -1, -1, -1, -1, CEDARVIEW, ATOM_ , 0, "Atom (Cedarview)" },
{ 6, 6, -1, -1, -1, -1, -1, -1, CEDARVIEW, ATOM_ , 0, "Atom (Cedarview)" }, { 6, 6, -1, -1, -1, -1, -1, -1, CEDARVIEW, ATOM_ , 0, "Atom (Cedarview)" },
{ 6, 12, -1, -1, -1, -1, -1, -1, PINEVIEW, ATOM_ , 0, "Atom (Pineview)" }, { 6, 12, -1, -1, -1, -1, -1, -1, PINEVIEW, ATOM_ , 0, "Atom (Pineview)" },
/* -------------------------------------------------- */ /* -------------------------------------------------- */
{ 6, 14, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Yonah" }, { 6, 14, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Yonah" },
{ 6, 14, -1, -1, -1, 1, -1, -1, CORE_SOLO, 0 , 0, "Yonah (Core Solo)" }, { 6, 14, -1, -1, -1, 1, -1, -1, CORE_SOLO, 0 , 0, "Yonah (Core Solo)" },
{ 6, 14, -1, -1, -1, 2, -1, -1, CORE_DUO, 0 , 0, "Yonah (Core Duo)" }, { 6, 14, -1, -1, -1, 2, -1, -1, CORE_DUO, 0 , 0, "Yonah (Core Duo)" },
{ 6, 14, -1, -1, -1, 1, -1, -1, CORE_SOLO, MOBILE_, 0, "Yonah (Core Solo)" }, { 6, 14, -1, -1, -1, 1, -1, -1, CORE_SOLO, MOBILE_, 0, "Yonah (Core Solo)" },
{ 6, 14, -1, -1, -1, 2, -1, -1, CORE_DUO , MOBILE_, 0, "Yonah (Core Duo)" }, { 6, 14, -1, -1, -1, 2, -1, -1, CORE_DUO , MOBILE_, 0, "Yonah (Core Duo)" },
{ 6, 14, -1, -1, -1, 1, -1, -1, CORE_SOLO, 0 , 0, "Yonah (Core Solo)" }, { 6, 14, -1, -1, -1, 1, -1, -1, CORE_SOLO, 0 , 0, "Yonah (Core Solo)" },
{ 6, 15, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Core 2" }, { 6, 15, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Core 2" },
{ 6, 15, -1, -1, -1, 2, 4096, -1, CORE_DUO, 0 , 0, "Conroe (Core 2 Duo)" }, { 6, 15, -1, -1, -1, 2, 4096, -1, CORE_DUO, 0 , 0, "Conroe (Core 2 Duo)" },
{ 6, 15, -1, -1, -1, 2, 1024, -1, CORE_DUO, 0 , 0, "Conroe (Core 2 Duo) 1024K" }, { 6, 15, -1, -1, -1, 2, 1024, -1, CORE_DUO, 0 , 0, "Conroe (Core 2 Duo) 1024K" },
@ -203,18 +203,18 @@ const struct match_entry_t cpudb_intel[] = {
{ 6, 15, -1, -1, -1, 2, -1, -1, MOBILE_CORE_DUO, 0, 0, "Merom (Core 2 Duo)" }, { 6, 15, -1, -1, -1, 2, -1, -1, MOBILE_CORE_DUO, 0, 0, "Merom (Core 2 Duo)" },
{ 6, 15, -1, -1, -1, 2, 2048, -1, MEROM, 0 , 0, "Merom (Core 2 Duo) 2048K" }, { 6, 15, -1, -1, -1, 2, 2048, -1, MEROM, 0 , 0, "Merom (Core 2 Duo) 2048K" },
{ 6, 15, -1, -1, -1, 2, 4096, -1, MEROM, 0 , 0, "Merom (Core 2 Duo) 4096K" }, { 6, 15, -1, -1, -1, 2, 4096, -1, MEROM, 0 , 0, "Merom (Core 2 Duo) 4096K" },
{ 6, 15, -1, -1, 15, 1, -1, -1, NC, CELERON_ , 0, "Conroe-L (Celeron)" }, { 6, 15, -1, -1, 15, 1, -1, -1, NC, CELERON_ , 0, "Conroe-L (Celeron)" },
{ 6, 6, -1, -1, 22, 1, -1, -1, NC, CELERON_ , 0, "Conroe-L (Celeron)" }, { 6, 6, -1, -1, 22, 1, -1, -1, NC, CELERON_ , 0, "Conroe-L (Celeron)" },
{ 6, 15, -1, -1, 15, 2, -1, -1, NC, CELERON_ , 0, "Conroe-L (Allendale)" }, { 6, 15, -1, -1, 15, 2, -1, -1, NC, CELERON_ , 0, "Conroe-L (Allendale)" },
{ 6, 6, -1, -1, 22, 2, -1, -1, NC, CELERON_ , 0, "Conroe-L (Allendale)" }, { 6, 6, -1, -1, 22, 2, -1, -1, NC, CELERON_ , 0, "Conroe-L (Allendale)" },
{ 6, 6, -1, -1, 22, 1, -1, -1, NC, 0 , 0, "Unknown Core ?" }, { 6, 6, -1, -1, 22, 1, -1, -1, NC, 0 , 0, "Unknown Core ?" },
{ 6, 7, -1, -1, 23, 1, -1, -1, NC, 0 , 0, "Unknown Core ?" }, { 6, 7, -1, -1, 23, 1, -1, -1, NC, 0 , 0, "Unknown Core ?" },
{ 6, 6, -1, -1, 22, 400, -1, -1, MORE_THAN_QUADCORE, 0, 0, "More than quad-core" }, { 6, 6, -1, -1, 22, 400, -1, -1, MORE_THAN_QUADCORE, 0, 0, "More than quad-core" },
{ 6, 7, -1, -1, 23, 400, -1, -1, MORE_THAN_QUADCORE, 0, 0, "More than quad-core" }, { 6, 7, -1, -1, 23, 400, -1, -1, MORE_THAN_QUADCORE, 0, 0, "More than quad-core" },
{ 6, 7, -1, -1, 23, 1, -1, -1, CORE_SOLO , 0, 0, "Unknown Core 45nm" }, { 6, 7, -1, -1, 23, 1, -1, -1, CORE_SOLO , 0, 0, "Unknown Core 45nm" },
{ 6, 7, -1, -1, 23, 1, -1, -1, CORE_DUO , 0, 0, "Unknown Core 45nm" }, { 6, 7, -1, -1, 23, 1, -1, -1, CORE_DUO , 0, 0, "Unknown Core 45nm" },
{ 6, 7, -1, -1, 23, 2, 1024, -1, WOLFDALE , 0, 0, "Celeron Wolfdale 1M" }, { 6, 7, -1, -1, 23, 2, 1024, -1, WOLFDALE , 0, 0, "Celeron Wolfdale 1M" },
@ -228,7 +228,7 @@ const struct match_entry_t cpudb_intel[] = {
{ 6, 7, -1, -1, 23, 4, 2048, -1, NC , 0, 0, "Yorkfield (Core 2 Quad) 2M"}, { 6, 7, -1, -1, 23, 4, 2048, -1, NC , 0, 0, "Yorkfield (Core 2 Quad) 2M"},
{ 6, 7, -1, -1, 23, 4, 3072, -1, NC , 0, 0, "Yorkfield (Core 2 Quad) 3M"}, { 6, 7, -1, -1, 23, 4, 3072, -1, NC , 0, 0, "Yorkfield (Core 2 Quad) 3M"},
{ 6, 7, -1, -1, 23, 4, 6144, -1, NC , 0, 0, "Yorkfield (Core 2 Quad) 6M"}, { 6, 7, -1, -1, 23, 4, 6144, -1, NC , 0, 0, "Yorkfield (Core 2 Quad) 6M"},
/* Core microarchitecture-based Xeons: */ /* Core microarchitecture-based Xeons: */
{ 6, 14, -1, -1, 14, 1, -1, -1, NC, XEON_ , 0, "Xeon LV" }, { 6, 14, -1, -1, 14, 1, -1, -1, NC, XEON_ , 0, "Xeon LV" },
{ 6, 15, -1, -1, 15, 2, 4096, -1, NC, XEON_ , _5100, "Xeon (Woodcrest)" }, { 6, 15, -1, -1, 15, 2, 4096, -1, NC, XEON_ , _5100, "Xeon (Woodcrest)" },
@ -285,7 +285,7 @@ const struct match_entry_t cpudb_intel[] = {
{ 6, 10, -1, -1, 58, 1, -1, -1, NC, CELERON_ , 0, "Ivy Bridge (Celeron)" }, { 6, 10, -1, -1, 58, 1, -1, -1, NC, CELERON_ , 0, "Ivy Bridge (Celeron)" },
{ 6, 10, -1, -1, 58, 2, -1, -1, NC, CELERON_ , 0, "Ivy Bridge (Celeron)" }, { 6, 10, -1, -1, 58, 2, -1, -1, NC, CELERON_ , 0, "Ivy Bridge (Celeron)" },
{ 6, 14, -1, -1, 62, -1, -1, -1, NC, 0 , 0, "Ivy Bridge-E" }, { 6, 14, -1, -1, 62, -1, -1, -1, NC, 0 , 0, "Ivy Bridge-E" },
/* Haswell CPUs (4th gen, 22nm): */ /* Haswell CPUs (4th gen, 22nm): */
{ 6, 12, -1, -1, 60, -1, -1, -1, NC, XEON_ , 0, "Haswell (Xeon)" }, { 6, 12, -1, -1, 60, -1, -1, -1, NC, XEON_ , 0, "Haswell (Xeon)" },
{ 6, 12, -1, -1, 60, 4, -1, -1, NC, CORE_|_I_|_7 , 0, "Haswell (Core i7)" }, { 6, 12, -1, -1, 60, 4, -1, -1, NC, CORE_|_I_|_7 , 0, "Haswell (Core i7)" },
@ -369,7 +369,7 @@ const struct match_entry_t cpudb_intel[] = {
{ 6, 14, 12, -1, 158, 8, -1, -1, NC, CORE_|_I_|_7 , 0, "Coffee Lake-R (Core i7)" }, { 6, 14, 12, -1, 158, 8, -1, -1, NC, CORE_|_I_|_7 , 0, "Coffee Lake-R (Core i7)" },
{ 6, 14, 13, -1, 158, 6, -1, -1, NC, CORE_|_I_|_5 , 0, "Coffee Lake-R (Core i5)" }, { 6, 14, 13, -1, 158, 6, -1, -1, NC, CORE_|_I_|_5 , 0, "Coffee Lake-R (Core i5)" },
{ 6, 14, 11, -1, 158, 4, -1, -1, NC, CORE_|_I_|_3 , 0, "Coffee Lake-R (Core i3)" }, { 6, 14, 11, -1, 158, 4, -1, -1, NC, CORE_|_I_|_3 , 0, "Coffee Lake-R (Core i3)" },
/* Comet Lake CPUs (10th gen, 14nm): */ /* Comet Lake CPUs (10th gen, 14nm): */
{ 6, 5, -1, -1, 165, 10, -1, -1, NC, CORE_|_I_|_9 , 0, "Comet Lake (Core i9)" }, { 6, 5, -1, -1, 165, 10, -1, -1, NC, CORE_|_I_|_9 , 0, "Comet Lake (Core i9)" },
{ 6, 5, -1, -1, 165, 8, -1, -1, NC, CORE_|_I_|_7 , 0, "Comet Lake (Core i7)" }, { 6, 5, -1, -1, 165, 8, -1, -1, NC, CORE_|_I_|_7 , 0, "Comet Lake (Core i7)" },
@ -502,7 +502,7 @@ static void decode_intel_oldstyle_cache_info(struct cpu_raw_data_t* raw, struct
x >>= 8; x >>= 8;
} }
} }
check_case(f[0x06], L1I, 8, 4, 32, data); check_case(f[0x06], L1I, 8, 4, 32, data);
check_case(f[0x08], L1I, 16, 4, 32, data); check_case(f[0x08], L1I, 16, 4, 32, data);
check_case(f[0x0A], L1D, 8, 2, 32, data); check_case(f[0x0A], L1D, 8, 2, 32, data);
@ -542,7 +542,7 @@ static void decode_intel_oldstyle_cache_info(struct cpu_raw_data_t* raw, struct
check_case(f[0x71], L1I, 16, 8, -1, data); check_case(f[0x71], L1I, 16, 8, -1, data);
check_case(f[0x72], L1I, 32, 8, -1, data); check_case(f[0x72], L1I, 32, 8, -1, data);
check_case(f[0x73], L1I, 64, 8, -1, data); check_case(f[0x73], L1I, 64, 8, -1, data);
check_case(f[0x78], L2, 1024, 4, 64, data); check_case(f[0x78], L2, 1024, 4, 64, data);
check_case(f[0x79], L2, 128, 8, 64, data); check_case(f[0x79], L2, 128, 8, 64, data);
check_case(f[0x7A], L2, 256, 8, 64, data); check_case(f[0x7A], L2, 256, 8, 64, data);
@ -556,7 +556,7 @@ static void decode_intel_oldstyle_cache_info(struct cpu_raw_data_t* raw, struct
check_case(f[0x85], L2, 2048, 8, 32, data); check_case(f[0x85], L2, 2048, 8, 32, data);
check_case(f[0x86], L2, 512, 4, 64, data); check_case(f[0x86], L2, 512, 4, 64, data);
check_case(f[0x87], L2, 1024, 8, 64, data); check_case(f[0x87], L2, 1024, 8, 64, data);
if (f[0x49]) { if (f[0x49]) {
/* This flag is overloaded with two meanings. On Xeon MP /* This flag is overloaded with two meanings. On Xeon MP
* (family 0xf, model 0x6) this means L3 cache. On all other * (family 0xf, model 0x6) this means L3 cache. On all other
@ -651,11 +651,11 @@ static void decode_intel_number_of_cores(struct cpu_raw_data_t* raw,
struct cpu_id_t* data) struct cpu_id_t* data)
{ {
int logical_cpus = -1, num_cores = -1; int logical_cpus = -1, num_cores = -1;
if (raw->basic_cpuid[0][0] >= 11) { if (raw->basic_cpuid[0][0] >= 11) {
if (decode_intel_extended_topology(raw, data)) return; if (decode_intel_extended_topology(raw, data)) return;
} }
if (raw->basic_cpuid[0][0] >= 1) { if (raw->basic_cpuid[0][0] >= 1) {
logical_cpus = (raw->basic_cpuid[1][1] >> 16) & 0xff; logical_cpus = (raw->basic_cpuid[1][1] >> 16) & 0xff;
if (raw->basic_cpuid[0][0] >= 4) { if (raw->basic_cpuid[0][0] >= 4) {
@ -697,7 +697,7 @@ static intel_code_and_bits_t get_brand_code_and_bits(struct cpu_id_t* data)
{ PINEVIEW, "CPU [ND][45]## " }, { PINEVIEW, "CPU [ND][45]## " },
{ CEDARVIEW, "CPU [ND]#### " }, { CEDARVIEW, "CPU [ND]#### " },
}; };
const struct { uint64_t bit; const char* search; } bit_matchtable[] = { const struct { uint64_t bit; const char* search; } bit_matchtable[] = {
{ XEON_, "Xeon" }, { XEON_, "Xeon" },
{ _MP_, " MP" }, { _MP_, " MP" },
@ -706,12 +706,12 @@ static intel_code_and_bits_t get_brand_code_and_bits(struct cpu_id_t* data)
{ CELERON_, "Celeron" }, { CELERON_, "Celeron" },
{ PENTIUM_, "Pentium" }, { PENTIUM_, "Pentium" },
}; };
for (i = 0; i < COUNT_OF(bit_matchtable); i++) { for (i = 0; i < COUNT_OF(bit_matchtable); i++) {
if (match_pattern(bs, bit_matchtable[i].search)) if (match_pattern(bs, bit_matchtable[i].search))
bits |= bit_matchtable[i].bit; bits |= bit_matchtable[i].bit;
} }
if ((i = match_pattern(bs, "Core(TM) [im][3579]")) != 0) { if ((i = match_pattern(bs, "Core(TM) [im][3579]")) != 0) {
bits |= CORE_; bits |= CORE_;
i--; i--;
@ -775,7 +775,7 @@ static intel_code_and_bits_t get_brand_code_and_bits(struct cpu_id_t* data)
code = MORE_THAN_QUADCORE; break; code = MORE_THAN_QUADCORE; break;
} }
} }
if (code == CORE_DUO && (bits & MOBILE_) && data->model != 14) { if (code == CORE_DUO && (bits & MOBILE_) && data->model != 14) {
if (data->ext_model < 23) { if (data->ext_model < 23) {
code = MEROM; code = MEROM;
@ -807,7 +807,7 @@ static intel_model_t get_model_code(struct cpu_id_t* data)
if (bs[i] == '3') return _3xxx; if (bs[i] == '3') return _3xxx;
return UNKNOWN; return UNKNOWN;
} }
/* For Core2-based Xeons: */ /* For Core2-based Xeons: */
while (i < l - 3) { while (i < l - 3) {
if (bs[i] == 'C' && bs[i+1] == 'P' && bs[i+2] == 'U') if (bs[i] == 'C' && bs[i+1] == 'P' && bs[i+2] == 'U')
@ -856,10 +856,10 @@ static void decode_intel_sgx_features(const struct cpu_raw_data_t* raw, struct c
{ {
struct cpu_epc_t epc; struct cpu_epc_t epc;
int i; int i;
if (raw->basic_cpuid[0][0] < 0x12) return; // no 12h leaf if (raw->basic_cpuid[0][0] < 0x12) return; // no 12h leaf
if (raw->basic_cpuid[0x12][0] == 0) return; // no sub-leafs available, probably it's disabled by BIOS if (raw->basic_cpuid[0x12][0] == 0) return; // no sub-leafs available, probably it's disabled by BIOS
// decode sub-leaf 0: // decode sub-leaf 0:
if (raw->basic_cpuid[0x12][0] & 1) data->sgx.flags[INTEL_SGX1] = 1; if (raw->basic_cpuid[0x12][0] & 1) data->sgx.flags[INTEL_SGX1] = 1;
if (raw->basic_cpuid[0x12][0] & 2) data->sgx.flags[INTEL_SGX2] = 1; if (raw->basic_cpuid[0x12][0] & 2) data->sgx.flags[INTEL_SGX2] = 1;
@ -868,11 +868,11 @@ static void decode_intel_sgx_features(const struct cpu_raw_data_t* raw, struct c
data->sgx.misc_select = raw->basic_cpuid[0x12][1]; data->sgx.misc_select = raw->basic_cpuid[0x12][1];
data->sgx.max_enclave_32bit = (raw->basic_cpuid[0x12][3] ) & 0xff; data->sgx.max_enclave_32bit = (raw->basic_cpuid[0x12][3] ) & 0xff;
data->sgx.max_enclave_64bit = (raw->basic_cpuid[0x12][3] >> 8) & 0xff; data->sgx.max_enclave_64bit = (raw->basic_cpuid[0x12][3] >> 8) & 0xff;
// decode sub-leaf 1: // decode sub-leaf 1:
data->sgx.secs_attributes = raw->intel_fn12h[1][0] | (((uint64_t) raw->intel_fn12h[1][1]) << 32); data->sgx.secs_attributes = raw->intel_fn12h[1][0] | (((uint64_t) raw->intel_fn12h[1][1]) << 32);
data->sgx.secs_xfrm = raw->intel_fn12h[1][2] | (((uint64_t) raw->intel_fn12h[1][3]) << 32); data->sgx.secs_xfrm = raw->intel_fn12h[1][2] | (((uint64_t) raw->intel_fn12h[1][3]) << 32);
// decode higher-order subleafs, whenever present: // decode higher-order subleafs, whenever present:
data->sgx.num_epc_sections = -1; data->sgx.num_epc_sections = -1;
for (i = 0; i < 1000000; i++) { for (i = 0; i < 1000000; i++) {
@ -903,7 +903,7 @@ struct cpu_epc_t cpuid_get_epc(int index, const struct cpu_raw_data_t* raw)
regs[1] = regs[3] = 0; regs[1] = regs[3] = 0;
cpu_exec_cpuid_ext(regs); cpu_exec_cpuid_ext(regs);
} }
// decode values: // decode values:
if ((regs[0] & 0xf) == 0x1) { if ((regs[0] & 0xf) == 0x1) {
retval.start_addr |= (regs[0] & 0xfffff000); // bits [12, 32) -> bits [12, 32) retval.start_addr |= (regs[0] & 0xfffff000); // bits [12, 32) -> bits [12, 32)
@ -947,10 +947,10 @@ int cpuid_identify_intel(struct cpu_raw_data_t* raw, struct cpu_id_t* data, stru
debug_print_lbits(2, brand.bits); debug_print_lbits(2, brand.bits);
} }
debugf(2, "Detected Intel model code: %d\n", model_code); debugf(2, "Detected Intel model code: %d\n", model_code);
internal->code.intel = brand.code; internal->code.intel = brand.code;
internal->bits = brand.bits; internal->bits = brand.bits;
if (data->flags[CPU_FEATURE_SGX]) { if (data->flags[CPU_FEATURE_SGX]) {
debugf(2, "SGX seems to be present, decoding...\n"); debugf(2, "SGX seems to be present, decoding...\n");
// if SGX is indicated by the CPU, verify its presence: // if SGX is indicated by the CPU, verify its presence:

View file

@ -1,45 +1,45 @@
Microsoft Visual Studio Solution File, Format Version 11.00 Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010 # Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcpuid", "libcpuid\libcpuid_vc10.vcxproj", "{92BDBA37-96E3-4D85-B762-185E4407BB49}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcpuid", "libcpuid\libcpuid_vc10.vcxproj", "{92BDBA37-96E3-4D85-B762-185E4407BB49}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpuid_tool", "cpuid_tool\cpuid_tool_vc10.vcxproj", "{854A36FB-EA23-4165-9110-A55EB97C6377}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpuid_tool", "cpuid_tool\cpuid_tool_vc10.vcxproj", "{854A36FB-EA23-4165-9110-A55EB97C6377}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32 Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64 Debug|x64 = Debug|x64
Release|Win32 = Release|Win32 Release|Win32 = Release|Win32
Release|x64 = Release|x64 Release|x64 = Release|x64
ReleaseDLL|Win32 = ReleaseDLL|Win32 ReleaseDLL|Win32 = ReleaseDLL|Win32
ReleaseDLL|x64 = ReleaseDLL|x64 ReleaseDLL|x64 = ReleaseDLL|x64
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{92BDBA37-96E3-4D85-B762-185E4407BB49}.Debug|Win32.ActiveCfg = Debug|Win32 {92BDBA37-96E3-4D85-B762-185E4407BB49}.Debug|Win32.ActiveCfg = Debug|Win32
{92BDBA37-96E3-4D85-B762-185E4407BB49}.Debug|Win32.Build.0 = Debug|Win32 {92BDBA37-96E3-4D85-B762-185E4407BB49}.Debug|Win32.Build.0 = Debug|Win32
{92BDBA37-96E3-4D85-B762-185E4407BB49}.Debug|x64.ActiveCfg = Debug|x64 {92BDBA37-96E3-4D85-B762-185E4407BB49}.Debug|x64.ActiveCfg = Debug|x64
{92BDBA37-96E3-4D85-B762-185E4407BB49}.Debug|x64.Build.0 = Debug|x64 {92BDBA37-96E3-4D85-B762-185E4407BB49}.Debug|x64.Build.0 = Debug|x64
{92BDBA37-96E3-4D85-B762-185E4407BB49}.Release|Win32.ActiveCfg = Release|Win32 {92BDBA37-96E3-4D85-B762-185E4407BB49}.Release|Win32.ActiveCfg = Release|Win32
{92BDBA37-96E3-4D85-B762-185E4407BB49}.Release|Win32.Build.0 = Release|Win32 {92BDBA37-96E3-4D85-B762-185E4407BB49}.Release|Win32.Build.0 = Release|Win32
{92BDBA37-96E3-4D85-B762-185E4407BB49}.Release|x64.ActiveCfg = Release|x64 {92BDBA37-96E3-4D85-B762-185E4407BB49}.Release|x64.ActiveCfg = Release|x64
{92BDBA37-96E3-4D85-B762-185E4407BB49}.Release|x64.Build.0 = Release|x64 {92BDBA37-96E3-4D85-B762-185E4407BB49}.Release|x64.Build.0 = Release|x64
{92BDBA37-96E3-4D85-B762-185E4407BB49}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 {92BDBA37-96E3-4D85-B762-185E4407BB49}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32
{92BDBA37-96E3-4D85-B762-185E4407BB49}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 {92BDBA37-96E3-4D85-B762-185E4407BB49}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32
{92BDBA37-96E3-4D85-B762-185E4407BB49}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 {92BDBA37-96E3-4D85-B762-185E4407BB49}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
{92BDBA37-96E3-4D85-B762-185E4407BB49}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 {92BDBA37-96E3-4D85-B762-185E4407BB49}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
{854A36FB-EA23-4165-9110-A55EB97C6377}.Debug|Win32.ActiveCfg = Debug|Win32 {854A36FB-EA23-4165-9110-A55EB97C6377}.Debug|Win32.ActiveCfg = Debug|Win32
{854A36FB-EA23-4165-9110-A55EB97C6377}.Debug|Win32.Build.0 = Debug|Win32 {854A36FB-EA23-4165-9110-A55EB97C6377}.Debug|Win32.Build.0 = Debug|Win32
{854A36FB-EA23-4165-9110-A55EB97C6377}.Debug|x64.ActiveCfg = Debug|x64 {854A36FB-EA23-4165-9110-A55EB97C6377}.Debug|x64.ActiveCfg = Debug|x64
{854A36FB-EA23-4165-9110-A55EB97C6377}.Debug|x64.Build.0 = Debug|x64 {854A36FB-EA23-4165-9110-A55EB97C6377}.Debug|x64.Build.0 = Debug|x64
{854A36FB-EA23-4165-9110-A55EB97C6377}.Release|Win32.ActiveCfg = Release|Win32 {854A36FB-EA23-4165-9110-A55EB97C6377}.Release|Win32.ActiveCfg = Release|Win32
{854A36FB-EA23-4165-9110-A55EB97C6377}.Release|Win32.Build.0 = Release|Win32 {854A36FB-EA23-4165-9110-A55EB97C6377}.Release|Win32.Build.0 = Release|Win32
{854A36FB-EA23-4165-9110-A55EB97C6377}.Release|x64.ActiveCfg = Release|x64 {854A36FB-EA23-4165-9110-A55EB97C6377}.Release|x64.ActiveCfg = Release|x64
{854A36FB-EA23-4165-9110-A55EB97C6377}.Release|x64.Build.0 = Release|x64 {854A36FB-EA23-4165-9110-A55EB97C6377}.Release|x64.Build.0 = Release|x64
{854A36FB-EA23-4165-9110-A55EB97C6377}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 {854A36FB-EA23-4165-9110-A55EB97C6377}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32
{854A36FB-EA23-4165-9110-A55EB97C6377}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 {854A36FB-EA23-4165-9110-A55EB97C6377}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32
{854A36FB-EA23-4165-9110-A55EB97C6377}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 {854A36FB-EA23-4165-9110-A55EB97C6377}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
{854A36FB-EA23-4165-9110-A55EB97C6377}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 {854A36FB-EA23-4165-9110-A55EB97C6377}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal

View file

@ -1,35 +1,35 @@
Microsoft Visual Studio Solution File, Format Version 8.00 Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcpuid", "libcpuid\libcpuid_vc71.vcproj", "{A517C21D-1467-41B4-966A-7C7FC5E99D62}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcpuid", "libcpuid\libcpuid_vc71.vcproj", "{A517C21D-1467-41B4-966A-7C7FC5E99D62}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpuid_tool", "cpuid_tool\cpuid_tool_vc71.vcproj", "{DD903FEE-4A59-4307-8DE2-0F777DC21FFE}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpuid_tool", "cpuid_tool\cpuid_tool_vc71.vcproj", "{DD903FEE-4A59-4307-8DE2-0F777DC21FFE}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{A517C21D-1467-41B4-966A-7C7FC5E99D62} = {A517C21D-1467-41B4-966A-7C7FC5E99D62} {A517C21D-1467-41B4-966A-7C7FC5E99D62} = {A517C21D-1467-41B4-966A-7C7FC5E99D62}
EndProjectSection EndProjectSection
EndProject EndProject
Global Global
GlobalSection(SolutionConfiguration) = preSolution GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug Debug = Debug
Release = Release Release = Release
Release DLL = Release DLL Release DLL = Release DLL
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution GlobalSection(ProjectConfiguration) = postSolution
{A517C21D-1467-41B4-966A-7C7FC5E99D62}.Debug.ActiveCfg = Debug|Win32 {A517C21D-1467-41B4-966A-7C7FC5E99D62}.Debug.ActiveCfg = Debug|Win32
{A517C21D-1467-41B4-966A-7C7FC5E99D62}.Debug.Build.0 = Debug|Win32 {A517C21D-1467-41B4-966A-7C7FC5E99D62}.Debug.Build.0 = Debug|Win32
{A517C21D-1467-41B4-966A-7C7FC5E99D62}.Release.ActiveCfg = Release|Win32 {A517C21D-1467-41B4-966A-7C7FC5E99D62}.Release.ActiveCfg = Release|Win32
{A517C21D-1467-41B4-966A-7C7FC5E99D62}.Release.Build.0 = Release|Win32 {A517C21D-1467-41B4-966A-7C7FC5E99D62}.Release.Build.0 = Release|Win32
{A517C21D-1467-41B4-966A-7C7FC5E99D62}.Release DLL.ActiveCfg = Release DLL|Win32 {A517C21D-1467-41B4-966A-7C7FC5E99D62}.Release DLL.ActiveCfg = Release DLL|Win32
{A517C21D-1467-41B4-966A-7C7FC5E99D62}.Release DLL.Build.0 = Release DLL|Win32 {A517C21D-1467-41B4-966A-7C7FC5E99D62}.Release DLL.Build.0 = Release DLL|Win32
{DD903FEE-4A59-4307-8DE2-0F777DC21FFE}.Debug.ActiveCfg = Debug|Win32 {DD903FEE-4A59-4307-8DE2-0F777DC21FFE}.Debug.ActiveCfg = Debug|Win32
{DD903FEE-4A59-4307-8DE2-0F777DC21FFE}.Debug.Build.0 = Debug|Win32 {DD903FEE-4A59-4307-8DE2-0F777DC21FFE}.Debug.Build.0 = Debug|Win32
{DD903FEE-4A59-4307-8DE2-0F777DC21FFE}.Release.ActiveCfg = Release|Win32 {DD903FEE-4A59-4307-8DE2-0F777DC21FFE}.Release.ActiveCfg = Release|Win32
{DD903FEE-4A59-4307-8DE2-0F777DC21FFE}.Release.Build.0 = Release|Win32 {DD903FEE-4A59-4307-8DE2-0F777DC21FFE}.Release.Build.0 = Release|Win32
{DD903FEE-4A59-4307-8DE2-0F777DC21FFE}.Release DLL.ActiveCfg = Release DLL|Win32 {DD903FEE-4A59-4307-8DE2-0F777DC21FFE}.Release DLL.ActiveCfg = Release DLL|Win32
{DD903FEE-4A59-4307-8DE2-0F777DC21FFE}.Release DLL.Build.0 = Release DLL|Win32 {DD903FEE-4A59-4307-8DE2-0F777DC21FFE}.Release DLL.Build.0 = Release DLL|Win32
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal

View file

@ -62,7 +62,7 @@ int main(int argc, char *argv[])
fclose(fout); fclose(fout);
snprintf(cmd, CMD_LEN, "cpuid_tool --load=%s --report --outfile=%s", raw_filename, report_filename); snprintf(cmd, CMD_LEN, "cpuid_tool --load=%s --report --outfile=%s", raw_filename, report_filename);
system(cmd); system(cmd);
/* Invoke create_test */ /* Invoke create_test */
snprintf(cmd, CMD_LEN, "./create_test.py %s %s > %s.test", raw_filename, report_filename, output_filename); snprintf(cmd, CMD_LEN, "./create_test.py %s %s > %s.test", raw_filename, report_filename, output_filename);
if((argc > 3) && !strcmp(argv[3], "--create")) if((argc > 3) && !strcmp(argv[3], "--create"))

View file

@ -101,7 +101,7 @@ def do_test(inp, expected_out, binary, test_file_name):
fixFile(test_file_name, inp, real_out) fixFile(test_file_name, inp, real_out)
return "Mismatch, fixed." return "Mismatch, fixed."
else: else:
return "Mismatch in fields:\n%s" % "\n".join([fmt_error(err) for err in err_fields]) return "Mismatch in fields:\n%s" % "\n".join([fmt_error(err) for err in err_fields])
errors = False errors = False
print "Testing..." print "Testing..."