Re: [PATCH v6 04/15] nat/x86-cpuid.h: Add x86_cpuid_count wrapper around __get_cpuid_count.

Simon Marchi via Gdb-patches
2023-07-26T19:42:23Z

On 7/14/23 11:51, John Baldwin wrote:
> ---
> 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.40.0
>

Approved-By: Simon Marchi <simon.marchi@efficios.com>

Simon