#include <stdint.h>
/**
- * enum cpuid - stuff to get information on from the CPU.
+ * enum cpuid - stuff to get information about from the CPU.
*
* This is used as a parameter in cpuid().
*
CPU_HIGHEST_EXTENDED_FUNCTION_SUPPORTED = 0x80000000,
CPU_EXTENDED_PROC_INFO_FEATURE_BITS = 0x80000001,
- CPU_PROC_BRAND_STRING = 0x80000002,
+ CPU_PROC_BRAND_STRING = 0x80000002,
CPU_L1_CACHE_AND_TLB_IDS = 0x80000005,
CPU_EXTENDED_L2_CACHE_FEATURES = 0x80000006,
CPU_ADV_POWER_MGT_INFO = 0x80000007,
*
* See also: cpuid_get_cpu_type_string()
*/
+#define is_intel_cpu() cpuid_get_cpu_type() == CT_INTEL
+#define is_amd_cpu() cpuid_get_cpu_type() == CT_AMDK5 || cpuid_get_cpu_type() == CT_AMD
cputype_t cpuid_get_cpu_type(void);
/**
- * cpuid_get_cpu_type_string - Get CPU Type string
+ * cpuid_sprintf_cputype - Get CPU Type string
+ * @cputype: a char of atleast 12 bytes in it.
*
- * Returns the CPU type string based off cputype_t.
+ * Returns true on success, false on failure
*/
-const char *cpuid_get_cpu_type_string(const cputype_t cputype);
+bool cpuid_sprintf_cputype(const cputype_t cputype, char *buf);
/**
* cpuid_is_supported - test if the CPUID instruction is supported
* Returns a string into buf.
*
* For CPU_PROCINFO_AND_FEATUREBITS:
- * buf[0]:
- * - 3:0 - Stepping
- * - 7:4 - Model
- * - 11:8 - Family
- * - 13:12 - Processor Type
- * - 19:16 - Extended Model
- * - 27:20 - Extended family
- * buf[1] and buf[2]:
+ * buf[0]: Stepping
+ * buf[1]: Model
+ * buf[2]: Family
+ * buf[3]: Extended Model
+ * buf[4]: Extended Family
+ * buf[5] and buf[6]:
* Feature flags
- * buf[3]:
- * Additional feature information.
+ * buf[7]: Brand Index
+ * buf[8]: CL Flush Line Size
+ * buf[9]: Logical Processors
+ * buf[10]: Initial APICID
*
* For CPU_L1_CACHE_AND_TLB_IDS:
* buf[0]: (eax):
* For CPU_EXTENDED_PROC_INFO_FEATURE_BITS:
* Returns them in buf[0] and buf[1].
*
+ * For CPU_EXTENDED_L2_CACHE_FEATURES:
+ * buf[0]: Line size
+ * buf[1]: Associativity
+ * buf[2]: Cache size.
+ *
* For CPU_VIRT_PHYS_ADDR_SIZES:
- * Returns it as an integer in *buf.
+ * buf[0]: Physical
+ * buf[1]: Virtual
*
* For CPU_PROC_BRAND_STRING:
* Have a char array with at least 48 bytes assigned to it.
#endif
#endif
-