Home | History | Annotate | Line # | Download | only in arch
      1  1.6  msaitoh /*      $NetBSD: cpuctl_i386.h,v 1.6 2021/10/07 13:04:18 msaitoh Exp $      */
      2  1.5  msaitoh 
      3  1.5  msaitoh #include <machine/specialreg.h>
      4  1.5  msaitoh #include <x86/cputypes.h>
      5  1.5  msaitoh #include <x86/cacheinfo.h>
      6  1.5  msaitoh 
      7  1.5  msaitoh struct cpu_info {
      8  1.5  msaitoh 	const char	*ci_dev;
      9  1.5  msaitoh 	int32_t		ci_cpu_type;	 /* for cpu's without cpuid */
     10  1.5  msaitoh 	uint32_t	ci_signature;	 /* X86 cpuid type */
     11  1.5  msaitoh 	uint32_t	ci_vendor[4];	 /* vendor string */
     12  1.5  msaitoh 	int32_t		ci_max_cpuid;	 /* highest cpuid supported */
     13  1.5  msaitoh 	uint32_t	ci_max_ext_cpuid; /* highest cpuid extended func lv */
     14  1.5  msaitoh 	uint32_t	ci_family;	 /* from ci_signature */
     15  1.5  msaitoh 	uint32_t	ci_model;	 /* from ci_signature */
     16  1.5  msaitoh 	uint32_t	ci_feat_val[10]; /* X86 CPUID feature bits
     17  1.5  msaitoh 					  *	[0] basic features %edx
     18  1.5  msaitoh 					  *	[1] basic features %ecx
     19  1.5  msaitoh 					  *	[2] extended features %edx
     20  1.5  msaitoh 					  *	[3] extended features %ecx
     21  1.5  msaitoh 					  *	[4] VIA padlock features
     22  1.5  msaitoh 					  *	[5] structure ext. feat. %ebx
     23  1.5  msaitoh 					  *	[6] structure ext. feat. %ecx
     24  1.5  msaitoh 					  *     [7] structure ext. feat. %edx
     25  1.5  msaitoh 					  *	[8] XCR0 bits (d:0 %eax)
     26  1.5  msaitoh 					  *	[9] xsave flags (d:1 %eax)
     27  1.5  msaitoh 					  */
     28  1.5  msaitoh 	uint32_t	ci_cpu_class;	 /* CPU class */
     29  1.5  msaitoh 	uint32_t	ci_brand_id;	 /* Intel brand id */
     30  1.5  msaitoh 	uint32_t	ci_cpu_serial[3]; /* PIII serial number */
     31  1.5  msaitoh 	uint64_t	ci_tsc_freq;	 /* cpu cycles/second */
     32  1.5  msaitoh 	uint8_t		ci_packageid;
     33  1.5  msaitoh 	uint8_t		ci_coreid;
     34  1.5  msaitoh 	uint8_t		ci_smtid;
     35  1.5  msaitoh 	uint32_t	ci_initapicid;	/* our initial APIC ID */
     36  1.5  msaitoh 
     37  1.5  msaitoh 	uint32_t	ci_cur_xsave;
     38  1.5  msaitoh 	uint32_t	ci_max_xsave;
     39  1.5  msaitoh 
     40  1.5  msaitoh 	struct x86_cache_info ci_cinfo[CAI_COUNT];
     41  1.5  msaitoh 	void		(*ci_info)(struct cpu_info *);
     42  1.5  msaitoh };
     43  1.5  msaitoh 
     44  1.5  msaitoh extern int cpu_vendor;
     45  1.5  msaitoh 
     46  1.5  msaitoh /* For x86/x86/identcpu_subr.c */
     47  1.5  msaitoh uint64_t cpu_tsc_freq_cpuid(struct cpu_info *);
     48  1.6  msaitoh void	cpu_dcp_cacheinfo(struct cpu_info *, uint32_t);
     49  1.1      dsl 
     50  1.1      dsl /* Interfaces to code in i386-asm.S */
     51  1.1      dsl 
     52  1.1      dsl #define	x86_cpuid(a,b)	x86_cpuid2((a),0,(b))
     53  1.1      dsl 
     54  1.1      dsl void x86_cpuid2(uint32_t, uint32_t, uint32_t *);
     55  1.1      dsl uint32_t x86_identify(void);
     56  1.2      dsl uint32_t x86_xgetbv(void);
     57