NtQuerySystemInformation: cpu information

Oliver Stieber oliver_stieber at yahoo.co.uk
Thu Jan 27 15:02:56 CST 2005


I'll see if darwinia runs ok now, it fails witht a
cannot detect CPU error.
 
http://www.darwinia.co.uk/downloads/

 --- Rein Klazes <wijn at wanadoo.nl> wrote: 
> Hi,
> 
> Changelog:
>  dlls/ntdll : nt.c
>  include  : winternl.h
> 
>  In NtQuerySystemInformation, handle request for
> information
>  class 1, now named SystemCpuInformation. Return
> some dummy
>  data for now.
> 
> Rein.
> > --- wine/dlls/ntdll/nt.c 2005-01-27
> 08:32:17.000000000 +0100
> +++ mywine/dlls/ntdll/nt.c 2005-01-27
> 13:52:32.000000000 +0100
> @@ -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;
> --- wine/include/winternl.h 2005-01-27
> 08:32:53.000000000 +0100
> +++ mywine/include/winternl.h 2005-01-27
> 13:54:11.000000000 +0100
> @@ -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;
>  


	
	
		
___________________________________________________________ 
ALL-NEW Yahoo! Messenger - all new features - even more fun! http://uk.messenger.yahoo.com



More information about the wine-devel mailing list