Commit 2a0df4bd authored by Rein Klazes's avatar Rein Klazes Committed by Alexandre Julliard

In NtQuerySystemInformation, handle request for information class 1,

now named SystemCpuInformation. Return some dummy data for now.
parent 160e6479
......@@ -546,6 +546,22 @@ NTSTATUS WINAPI NtQuerySystemInformation(
else ret = STATUS_INFO_LENGTH_MISMATCH;
}
break;
case SystemCpuInformation:
{
SYSTEM_CPU_INFORMATION* sci;
sci = (SYSTEM_CPU_INFORMATION *) SystemInformation;
if (Length >= sizeof(*sci))
{
/* FIXME: move some code from kernel/cpu.c to process this */
sci->Architecture = PROCESSOR_ARCHITECTURE_INTEL;
sci->Level = 6; /* 686, aka Pentium II+ */
sci->Revision = 0;
sci->Reserved = 0;
sci->FeatureSet = 0x1fff;
}
else ret = STATUS_INFO_LENGTH_MISMATCH;
}
break;
case SystemPerformanceInformation:
{
SYSTEM_PERFORMANCE_INFORMATION* spi = (SYSTEM_PERFORMANCE_INFORMATION*)SystemInformation;
......
......@@ -521,7 +521,7 @@ typedef enum _SECTION_INHERIT {
typedef enum _SYSTEM_INFORMATION_CLASS {
SystemBasicInformation = 0,
Unknown1,
SystemCpuInformation = 1,
SystemPerformanceInformation = 2,
SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
Unknown4,
......@@ -908,6 +908,35 @@ typedef struct _SYSTEM_BASIC_INFORMATION {
#endif
} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
/* CPU Information Class 0x01 */
typedef struct {
WORD Architecture;
WORD Level;
WORD Revision; /* combination of CPU model and stepping */
WORD Reserved; /* always zero */
DWORD FeatureSet; /* see bit flags below */
} SYSTEM_CPU_INFORMATION;
/* definitions of bits in the Feature set for the x86 processors */
#define CPU_FEATURE_VME 0x00000005 /* Virtual 86 Mode Extensions */
#define CPU_FEATURE_TSC 0x00000002 /* Time Stamp Counter available */
#define CPU_FEATURE_CMOV 0x00000008 /* Conditional Move instruction*/
#define CPU_FEATURE_PGE 0x00000014 /* Page table Entry Global bit */
#define CPU_FEATURE_PSE 0x00000024 /* Page Size Extension */
#define CPU_FEATURE_MTRR 0x00000040 /* Memory Type Range Registers */
#define CPU_FEATURE_CX8 0x00000080 /* Compare and eXchange 8 byte instr. */
#define CPU_FEATURE_MMX 0x00000100 /* Multi Media eXtensions */
#define CPU_FEATURE_X86 0x00000200 /* seems to be alway ON, on the '86 */
#define CPU_FEATURE_PAT 0x00000400 /* Page Attribute Table */
#define CPU_FEATURE_FXSR 0x00000800 /* FXSAVE and FXSTORE instructions */
#define CPU_FEATURE_SEP 0x00001000 /* SYSENTER and SYSEXIT instructions */
#define CPU_FEATURE_SSE 0x00002000 /* SSE extenstions (ext. MMX) */
#define CPU_FEATURE_3DNOW 0x00008000 /* 3DNOW instructions available
(FIXME: needs to be confirmed) */
#define CPU_FEATURE_SSE2 0x00010000 /* SSE2 extensions (XMMI64) */
#define CPU_FEATURE_DS 0x00020000 /* Debug Store */
#define CPU_FEATURE_HTT 0x00040000 /* Hyper Threading Technology */
/* System Information Class 0x15 */
typedef struct {
ULONG CurrentSize;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment