Processor identification structures
All checks were successful
ci/woodpecker/push/build Pipeline was successful

This commit is contained in:
Rafal Kupiec 2023-02-10 17:14:12 +01:00
parent e645cf664c
commit e94cb2d3a7
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
6 changed files with 70 additions and 0 deletions

View File

@ -110,6 +110,14 @@
#define X86_EFLAGS_VIP_MASK 0x00100000
#define X86_EFLAGS_ID_MASK 0x00200000
/* CPU vendor enumeration list */
typedef enum _CPU_VENDOR
{
CPU_VENDOR_AMD = 0x68747541,
CPU_VENDOR_INTEL = 0x756e6547,
CPU_VENDOR_UNKNOWN = 0xFFFFFFFF
} CPU_VENDOR, *PCPU_VENDOR;
/* CPUID features enumeration list */
typedef enum _CPUID_FEATURES
{
@ -185,6 +193,16 @@ typedef enum _CPUID_REQUESTS
CPUID_GET_SERIAL
} CPUID_REQUESTS, *PCPUID_REQUESTS;
/* Processor identification information */
typedef struct _CPU_IDENTIFICATION
{
USHORT Family;
USHORT Model;
USHORT Stepping;
CPU_VENDOR Vendor;
UCHAR VendorName[13];
} CPU_IDENTIFICATION, *PCPU_IDENTIFICATION;
/* CPUID registers */
typedef struct _CPUID_REGISTERS
{
@ -196,4 +214,16 @@ typedef struct _CPUID_REGISTERS
UINT32 Edx;
} CPUID_REGISTERS, *PCPUID_REGISTERS;
/* CPU signature read from CPUID structure definition */
typedef struct _CPUID_SIGNATURE
{
ULONG Stepping:4;
ULONG Model:4;
ULONG Family:4;
ULONG Unused1:4;
ULONG ExtendedModel:4;
ULONG ExtendedFamily:8;
ULONG Unused2:4;
} CPU_SIGNATURE, *PCPU_SIGNATURE;
#endif /* __XTDK_AMD64_ARTYPES_H */

View File

@ -13,6 +13,7 @@
#include <xtstruct.h>
#include <xttypes.h>
#include ARCH_HEADER(xtstruct.h)
#include ARCH_HEADER(artypes.h)
/* Selector masks */
@ -449,6 +450,7 @@ typedef struct _KPROCESSOR_CONTROL_BLOCK
PKTHREAD NextThread;
ULONG64 RspBase;
ULONG_PTR SetMember;
CPU_IDENTIFICATION CpuId;
KPROCESSOR_STATE ProcessorState;
PVOID DpcStack;
ULONG_PTR MultiThreadProcessorSet;

View File

@ -13,12 +13,15 @@
/* Architecture-specific enumeration lists forward references */
typedef enum _CPU_VENDOR CPU_VENDOR, *PCPU_VENDOR;
typedef enum _CPUID_FEATURES CPUID_FEATURES, *PCPUID_FEATURES;
typedef enum _CPUID_REQUESTS CPUID_REQUESTS, *PCPUID_REQUESTS;
/* Architecture-specific structures forward references */
typedef struct _CONTEXT CONTEXT, *PCONTEXT;
typedef struct _CPU_IDENTIFICATION CPU_IDENTIFICATION, *PCPU_IDENTIFICATION;
typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS;
typedef struct _CPUID_SIGNATURE CPUID_SIGNATURE, *PCPUID_SIGNATURE;
typedef struct _FLOATING_SAVE_AREA FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
typedef struct _HARDWARE_PTE HARDWARE_PTE, *PHARDWARE_PTE;
typedef struct _KDESCRIPTOR KDESCRIPTOR, *PKDESCRIPTOR;

View File

@ -61,6 +61,14 @@
#define SEGMENT_FS 0x64
#define SEGMENT_GS 0x65
/* CPU vendor enumeration list */
typedef enum _CPU_VENDOR
{
CPU_VENDOR_AMD = 0x68747541,
CPU_VENDOR_INTEL = 0x756e6547,
CPU_VENDOR_UNKNOWN = 0xFFFFFFFF
} CPU_VENDOR, *PCPU_VENDOR;
/* CPUID features enumeration list */
typedef enum _CPUID_FEATURES
{
@ -136,6 +144,16 @@ typedef enum _CPUID_REQUESTS
CPUID_GET_SERIAL
} CPUID_REQUESTS, *PCPUID_REQUESTS;
/* Processor identification information */
typedef struct _CPU_IDENTIFICATION
{
USHORT Family;
USHORT Model;
USHORT Stepping;
CPU_VENDOR Vendor;
UCHAR VendorName[13];
} CPU_IDENTIFICATION, *PCPU_IDENTIFICATION;
/* CPUID registers */
typedef struct _CPUID_REGISTERS
{
@ -147,4 +165,16 @@ typedef struct _CPUID_REGISTERS
UINT32 Edx;
} CPUID_REGISTERS, *PCPUID_REGISTERS;
/* CPU signature read from CPUID structure definition */
typedef struct _CPUID_SIGNATURE
{
ULONG Stepping:4;
ULONG Model:4;
ULONG Family:4;
ULONG Unused1:4;
ULONG ExtendedModel:4;
ULONG ExtendedFamily:8;
ULONG Unused2:4;
} CPU_SIGNATURE, *PCPU_SIGNATURE;
#endif /* __XTDK_I686_ARTYPES_H */

View File

@ -13,6 +13,7 @@
#include <xtstruct.h>
#include <xttypes.h>
#include ARCH_HEADER(xtstruct.h)
#include ARCH_HEADER(artypes.h)
/* Selector masks */
@ -352,6 +353,7 @@ typedef struct _KPROCESSOR_CONTROL_BLOCK
PKTHREAD NextThread;
UCHAR Number;
ULONG_PTR SetMember;
CPU_IDENTIFICATION CpuId;
KPROCESSOR_STATE ProcessorState;
ULONG_PTR MultiThreadProcessorSet;
PVOID DpcStack;

View File

@ -13,12 +13,15 @@
/* Architecture-specific enumeration lists forward references */
typedef enum _CPU_VENDOR CPU_VENDOR, *PCPU_VENDOR;
typedef enum _CPUID_FEATURES CPUID_FEATURES, *PCPUID_FEATURES;
typedef enum _CPUID_REQUESTS CPUID_REQUESTS, *PCPUID_REQUESTS;
/* Architecture-specific structures forward references */
typedef struct _CONTEXT CONTEXT, *PCONTEXT;
typedef struct _CPU_IDENTIFICATION CPU_IDENTIFICATION, *PCPU_IDENTIFICATION;
typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS;
typedef struct _CPUID_SIGNATURE CPUID_SIGNATURE, *PCPUID_SIGNATURE;
typedef struct _FLOATING_SAVE_AREA FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
typedef struct _HARDWARE_PTE HARDWARE_PTE, *PHARDWARE_PTE;
typedef struct _HARDWARE_PTE_PAE HARDWARE_PTE_PAE, *PHARDWARE_PTE_PAE;