diff options
Diffstat (limited to 'sys/arch/amd64')
-rw-r--r-- | sys/arch/amd64/amd64/machdep.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/arch/amd64/amd64/machdep.c b/sys/arch/amd64/amd64/machdep.c index 6408ad3..f0571b3 100644 --- a/sys/arch/amd64/amd64/machdep.c +++ b/sys/arch/amd64/amd64/machdep.c @@ -306,7 +306,7 @@ cpu_get_vendor(struct cpu_info *ci) static void cpu_get_info(struct cpu_info *ci) { - uint32_t eax, ebx, ecx, unused; + uint32_t eax, ebx, ecx, edx; uint8_t ext_model, ext_family; /* Get the vendor information */ @@ -322,6 +322,14 @@ cpu_get_info(struct cpu_info *ci) ci->feat |= CPU_FEAT_UMIP; /* + * Processor power management information bits as well + * as bits describing RAS capabilities + */ + CPUID(0x80000007, unused, unused, unused, edx); + if (ISSET(edx, BIT(8)) + ci->feat |= CPU_FEAT_TSCINV; + + /* * Processor info and feature bits */ CPUID(0x01, eax, unused, unused, unused); |