Index: gdb/common/i386-cpuid.h |
diff --git a/gdb/common/i386-cpuid.h b/gdb/common/i386-cpuid.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8bb28c533d3679a2af45c4683a2d49a6ce6f409e |
--- /dev/null |
+++ b/gdb/common/i386-cpuid.h |
@@ -0,0 +1,63 @@ |
+/* C API for x86 cpuid insn. |
+ Copyright (C) 2007-2013 Free Software Foundation, Inc. |
+ |
+ This file is part of GDB. |
+ |
+ This file is free software; you can redistribute it and/or modify it |
+ under the terms of the GNU General Public License as published by the |
+ Free Software Foundation; either version 3, or (at your option) any |
+ later version. |
+ |
+ This program is distributed in the hope that it will be useful, |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ GNU General Public License for more details. |
+ |
+ You should have received a copy of the GNU General Public License |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
+ |
+#ifndef I386_CPUID_COMMON_H |
+#define I386_CPUID_COMMON_H |
+ |
+/* Always include the header for the cpu bit defines. */ |
+#include "i386-gcc-cpuid.h" |
+ |
+#if defined(__i386__) || defined(__x86_64__) |
+ |
+/* Return cpuid data for requested cpuid 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 |
+i386_cpuid (unsigned int __level, |
+ unsigned int *__eax, unsigned int *__ebx, |
+ unsigned int *__ecx, unsigned int *__edx) |
+{ |
+ unsigned int __scratch; |
+ |
+ if (!__eax) |
+ __eax = &__scratch; |
+ if (!__ebx) |
+ __ebx = &__scratch; |
+ if (!__ecx) |
+ __ecx = &__scratch; |
+ if (!__edx) |
+ __edx = &__scratch; |
+ |
+ return __get_cpuid (__level, __eax, __ebx, __ecx, __edx); |
+} |
+ |
+#else |
+ |
+static __inline int |
+i386_cpuid (unsigned int __level, |
+ unsigned int *__eax, unsigned int *__ebx, |
+ unsigned int *__ecx, unsigned int *__edx) |
+{ |
+ return 0; |
+} |
+ |
+#endif /* i386 && x86_64 */ |
+ |
+#endif /* I386_CPUID_COMMON_H */ |