linux/arch/x86/kernel/cpu/cpu.h
<<
>>
Prefs
   1#ifndef ARCH_X86_CPU_H
   2#define ARCH_X86_CPU_H
   3
   4struct cpu_model_info {
   5        int             vendor;
   6        int             family;
   7        const char      *model_names[16];
   8};
   9
  10/* attempt to consolidate cpu attributes */
  11struct cpu_dev {
  12        const char      *c_vendor;
  13
  14        /* some have two possibilities for cpuid string */
  15        const char      *c_ident[2];
  16
  17        struct          cpu_model_info c_models[4];
  18
  19        void            (*c_early_init)(struct cpuinfo_x86 *);
  20        void            (*c_bsp_init)(struct cpuinfo_x86 *);
  21        void            (*c_init)(struct cpuinfo_x86 *);
  22        void            (*c_identify)(struct cpuinfo_x86 *);
  23        void            (*c_detect_tlb)(struct cpuinfo_x86 *);
  24        unsigned int    (*c_size_cache)(struct cpuinfo_x86 *, unsigned int);
  25        int             c_x86_vendor;
  26};
  27
  28struct _tlb_table {
  29        unsigned char descriptor;
  30        char tlb_type;
  31        unsigned int entries;
  32        /* unsigned int ways; */
  33        char info[128];
  34};
  35
  36#define cpu_dev_register(cpu_devX) \
  37        static const struct cpu_dev *const __cpu_dev_##cpu_devX __used \
  38        __attribute__((__section__(".x86_cpu_dev.init"))) = \
  39        &cpu_devX;
  40
  41extern const struct cpu_dev *const __x86_cpu_dev_start[],
  42                            *const __x86_cpu_dev_end[];
  43
  44extern void get_cpu_cap(struct cpuinfo_x86 *c);
  45extern void cpu_detect_cache_sizes(struct cpuinfo_x86 *c);
  46extern int detect_extended_topology_early(struct cpuinfo_x86 *c);
  47extern int detect_ht_early(struct cpuinfo_x86 *c);
  48#endif /* ARCH_X86_CPU_H */
  49