From e85aad4ae764d7fbc02d4f6a5729c1308597499f Mon Sep 17 00:00:00 2001 From: John Baldwin Date: Mon, 28 Aug 2023 14:18:19 -0700 Subject: [PATCH] nat/x86-cpuid.h: Add x86_cpuid_count wrapper around __get_cpuid_count. Approved-By: Simon Marchi --- gdb/nat/x86-cpuid.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gdb/nat/x86-cpuid.h b/gdb/nat/x86-cpuid.h index 0955afba577..517113d45e8 100644 --- a/gdb/nat/x86-cpuid.h +++ b/gdb/nat/x86-cpuid.h @@ -48,6 +48,30 @@ x86_cpuid (unsigned int __level, return __get_cpuid (__level, __eax, __ebx, __ecx, __edx); } +/* Return cpuid data for requested cpuid level and sub-level, as found + in returned eax, ebx, ecx and edx registers. The function checks + if cpuid is supported and returns 1 for valid cpuid information or + 0 for unsupported cpuid level. Pointers may be non-null. */ + +static __inline int +x86_cpuid_count (unsigned int __level, unsigned int __sublevel, + unsigned int *__eax, unsigned int *__ebx, + unsigned int *__ecx, unsigned int *__edx) +{ + unsigned int __scratch; + + if (__eax == nullptr) + __eax = &__scratch; + if (__ebx == nullptr) + __ebx = &__scratch; + if (__ecx == nullptr) + __ecx = &__scratch; + if (__edx == nullptr) + __edx = &__scratch; + + return __get_cpuid_count (__level, __sublevel, __eax, __ebx, __ecx, __edx); +} + #else static __inline int @@ -58,6 +82,14 @@ x86_cpuid (unsigned int __level, return 0; } +static __inline int +x86_cpuid_count (unsigned int __level, unsigned int __sublevel, + unsigned int *__eax, unsigned int *__ebx, + unsigned int *__ecx, unsigned int *__edx) +{ + return 0; +} + #endif /* i386 && x86_64 */ #endif /* NAT_X86_CPUID_H */ -- 2.30.2