1 #ifndef ARCH_X86_CPU_H 2 #define ARCH_X86_CPU_H 3 4 /* attempt to consolidate cpu attributes */ 5 struct cpu_dev { 6 const char *c_vendor; 7 8 /* some have two possibilities for cpuid string */ 9 const char *c_ident[2]; 10 11 void (*c_early_init)(struct cpuinfo_x86 *); 12 void (*c_bsp_init)(struct cpuinfo_x86 *); 13 void (*c_init)(struct cpuinfo_x86 *); 14 void (*c_identify)(struct cpuinfo_x86 *); 15 void (*c_detect_tlb)(struct cpuinfo_x86 *); 16 int c_x86_vendor; 17 #ifdef CONFIG_X86_32 18 /* Optional vendor specific routine to obtain the cache size. */ 19 unsigned int (*legacy_cache_size)(struct cpuinfo_x86 *, 20 unsigned int); 21 22 /* Family/stepping-based lookup table for model names. */ 23 struct legacy_cpu_model_info { 24 int family; 25 const char *model_names[16]; 26 } legacy_models[5]; 27 #endif 28 }; 29 30 struct _tlb_table { 31 unsigned char descriptor; 32 char tlb_type; 33 unsigned int entries; 34 /* unsigned int ways; */ 35 char info[128]; 36 }; 37 38 #define cpu_dev_register(cpu_devX) \ 39 static const struct cpu_dev *const __cpu_dev_##cpu_devX __used \ 40 __attribute__((__section__(".x86_cpu_dev.init"))) = \ 41 &cpu_devX; 42 43 extern const struct cpu_dev *const __x86_cpu_dev_start[], 44 *const __x86_cpu_dev_end[]; 45 46 extern void get_cpu_cap(struct cpuinfo_x86 *c); 47 extern void cpu_detect_cache_sizes(struct cpuinfo_x86 *c); 48 #endif /* ARCH_X86_CPU_H */ 49