Saving processor features in the processor control block

Fixed correct AMD Family 25 model detection
Fixed procedure for saving processor vendor name (previously corrupted)
Added a debugging print of the processor identification
This commit is contained in:
2024-05-06 17:28:35 +02:00
parent 243aacc9c1
commit 767b0cb000
8 changed files with 76 additions and 44 deletions

View File

@@ -204,6 +204,13 @@ typedef struct _CPU_IDENTIFICATION
UCHAR VendorName[13];
} CPU_IDENTIFICATION, *PCPU_IDENTIFICATION;
/* Processor features */
typedef struct _CPU_FEATURES
{
CPUID_FEATURES Ecx;
CPUID_FEATURES Edx;
} CPU_FEATURES, *PCPU_FEATURES;
/* CPUID registers */
typedef struct _CPUID_REGISTERS
{

View File

@@ -498,6 +498,7 @@ typedef struct _KPROCESSOR_CONTROL_BLOCK
ULONG64 RspBase;
ULONG_PTR SetMember;
CPU_IDENTIFICATION CpuId;
CPU_FEATURES CpuFeatures;
KPROCESSOR_STATE ProcessorState;
KSPIN_LOCK_QUEUE LockQueue[MaximumLock];
KDPC_DATA DpcData[2];

View File

@@ -21,6 +21,7 @@ typedef enum _PAGE_SIZE PAGE_SIZE, *PPAGE_SIZE;
/* Architecture-specific structures forward references */
typedef struct _CONTEXT CONTEXT, *PCONTEXT;
typedef struct _CPU_IDENTIFICATION CPU_IDENTIFICATION, *PCPU_IDENTIFICATION;
typedef struct _CPU_FEATURES CPU_FEATURES, *PCPU_FEATURES;
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;

View File

@@ -155,6 +155,13 @@ typedef struct _CPU_IDENTIFICATION
UCHAR VendorName[13];
} CPU_IDENTIFICATION, *PCPU_IDENTIFICATION;
/* Processor features */
typedef struct _CPU_FEATURES
{
CPUID_FEATURES Ecx;
CPUID_FEATURES Edx;
} CPU_FEATURES, *PCPU_FEATURES;
/* CPUID registers */
typedef struct _CPUID_REGISTERS
{

View File

@@ -456,6 +456,7 @@ typedef struct _KPROCESSOR_CONTROL_BLOCK
UCHAR Number;
ULONG_PTR SetMember;
CPU_IDENTIFICATION CpuId;
CPU_FEATURES CpuFeatures;
KPROCESSOR_STATE ProcessorState;
KSPIN_LOCK_QUEUE LockQueue[MaximumLock];
ULONG_PTR MultiThreadProcessorSet;

View File

@@ -21,6 +21,7 @@ typedef enum _PAGE_SIZE PAGE_SIZE, *PPAGE_SIZE;
/* Architecture-specific structures forward references */
typedef struct _CONTEXT CONTEXT, *PCONTEXT;
typedef struct _CPU_IDENTIFICATION CPU_IDENTIFICATION, *PCPU_IDENTIFICATION;
typedef struct _CPU_FEATURES CPU_FEATURES, *PCPU_FEATURES;
typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS;
typedef struct _CPUID_SIGNATURE CPUID_SIGNATURE, *PCPUID_SIGNATURE;
typedef struct _FN_SAVE_FORMAT FN_SAVE_FORMAT, *PFN_SAVE_FORMAT;