aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2023-08-28 14:18:19 -0700
committerJohn Baldwin <jhb@FreeBSD.org>2023-08-28 14:18:19 -0700
commite85aad4ae764d7fbc02d4f6a5729c1308597499f (patch)
treee745e676d99c02b6a3135e68f0a4f08168890173 /gdb
parentc689d1fe58b2c0faf51e4f574d50271f1d0648e3 (diff)
downloadgdb-e85aad4ae764d7fbc02d4f6a5729c1308597499f.zip
gdb-e85aad4ae764d7fbc02d4f6a5729c1308597499f.tar.gz
gdb-e85aad4ae764d7fbc02d4f6a5729c1308597499f.tar.bz2
nat/x86-cpuid.h: Add x86_cpuid_count wrapper around __get_cpuid_count.
Approved-By: Simon Marchi <simon.marchi@efficios.com>
Diffstat (limited to 'gdb')
-rw-r--r--gdb/nat/x86-cpuid.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/gdb/nat/x86-cpuid.h b/gdb/nat/x86-cpuid.h
index 0955afb..517113d 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 */