__cpuid_count

Function __cpuid_count 

1.27.0 · Source
pub fn __cpuid_count(leaf: u32, sub_leaf: u32) -> CpuidResult
Available on x86-64 only.
Expand description

Returns the result of the cpuid instruction for a given leaf (EAX) and sub_leaf (ECX).

There are two types of information leaves - basic leaves (with leaf < 0x8000000) and extended leaves (with leaf >= 0x80000000). The highest supported basic and extended leaves can be obtained by calling CPUID with 0 and 0x80000000, respectively, and reading the value in the EAX register. If the leaf supports more than one sub-leaf, then the procedure of obtaining the highest supported sub-leaf, as well as the behavior if a invalid sub-leaf value is passed, depends on the specific leaf.

If the leaf value is higher than the maximum supported basic or extended leaf for the processor, this returns the information for the highest supported basic information leaf (with the passed sub_leaf value). If the leaf value is less than or equal to the highest basic or extended leaf value, but the leaf is not supported on the processor, all zeros are returned.

The CPUID Wikipedia page contains information on how to query which information using the EAX and ECX registers, and the interpretation of the results returned in EAX, EBX, ECX, and EDX.

The references are: