Print this page
2650 AMD family 0x15 PG support

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/intel/sys/x86_archext.h
          +++ new/usr/src/uts/intel/sys/x86_archext.h
↓ open down ↓ 179 lines elided ↑ open up ↑
 180  180  #define CPUID_AMD_ECX_CR8D      0x00000010      /* AMD: 32-bit mov %cr8 */
 181  181  #define CPUID_AMD_ECX_LZCNT     0x00000020      /* AMD: LZCNT insn */
 182  182  #define CPUID_AMD_ECX_SSE4A     0x00000040      /* AMD: SSE4A insns */
 183  183  #define CPUID_AMD_ECX_MAS       0x00000080      /* AMD: MisAlignSse mnode */
 184  184  #define CPUID_AMD_ECX_3DNP      0x00000100      /* AMD: 3DNowPrefectch */
 185  185  #define CPUID_AMD_ECX_OSVW      0x00000200      /* AMD: OSVW */
 186  186  #define CPUID_AMD_ECX_IBS       0x00000400      /* AMD: IBS */
 187  187  #define CPUID_AMD_ECX_SSE5      0x00000800      /* AMD: SSE5 */
 188  188  #define CPUID_AMD_ECX_SKINIT    0x00001000      /* AMD: SKINIT */
 189  189  #define CPUID_AMD_ECX_WDT       0x00002000      /* AMD: WDT */
      190 +#define CPUID_AMD_ECX_TOPOEXT   0x00400000      /* AMD: Topology Extensions */
 190  191  
 191  192  #define FMT_CPUID_AMD_ECX                                       \
 192  193          "\20"                                                   \
      194 +        "\22topoext"                                            \
 193  195          "\14wdt\13skinit\12sse5\11ibs\10osvw\93dnp\8mas"        \
 194  196          "\7sse4a\6lzcnt\5cr8d\3svm\2lcmplgcy\1ahf64"
 195  197  
 196  198  /*
 197  199   * Intel now seems to have claimed part of the "extended" function
 198  200   * space that we previously for non-Intel implementors to use.
 199  201   * More excitingly still, they've claimed bit 20 to mean LAHF/SAHF
 200  202   * is available in long mode i.e. what AMD indicate using bit 0.
 201  203   * On the other hand, everything else is labelled as reserved.
 202  204   */
↓ open down ↓ 158 lines elided ↑ open up ↑
 361  363  #define X86FSET_SSE4_2          27
 362  364  #define X86FSET_1GPG            28
 363  365  #define X86FSET_CLFSH           29
 364  366  #define X86FSET_64              30
 365  367  #define X86FSET_AES             31
 366  368  #define X86FSET_PCLMULQDQ       32
 367  369  #define X86FSET_XSAVE           33
 368  370  #define X86FSET_AVX             34
 369  371  #define X86FSET_VMX             35
 370  372  #define X86FSET_SVM             36
      373 +#define X86FSET_TOPOEXT         37
 371  374  
 372  375  /*
 373  376   * flags to patch tsc_read routine.
 374  377   */
 375  378  #define X86_NO_TSC              0x0
 376  379  #define X86_HAVE_TSCP           0x1
 377  380  #define X86_TSC_MFENCE          0x2
 378  381  #define X86_TSC_LFENCE          0x4
 379  382  
 380  383  /*
↓ open down ↓ 203 lines elided ↑ open up ↑
 584  587  #define XFEATURE_LEGACY_FP      0x1
 585  588  #define XFEATURE_SSE            0x2
 586  589  #define XFEATURE_AVX            0x4
 587  590  #define XFEATURE_MAX            XFEATURE_AVX
 588  591  #define XFEATURE_FP_ALL         (XFEATURE_LEGACY_FP|XFEATURE_SSE|XFEATURE_AVX)
 589  592  
 590  593  #if !defined(_ASM)
 591  594  
 592  595  #if defined(_KERNEL) || defined(_KMEMUSER)
 593  596  
 594      -#define NUM_X86_FEATURES        37
      597 +#define NUM_X86_FEATURES        38
 595  598  extern uchar_t x86_featureset[];
 596  599  
 597  600  extern void free_x86_featureset(void *featureset);
 598  601  extern boolean_t is_x86_feature(void *featureset, uint_t feature);
 599  602  extern void add_x86_feature(void *featureset, uint_t feature);
 600  603  extern void remove_x86_feature(void *featureset, uint_t feature);
 601  604  extern boolean_t compare_x86_featureset(void *setA, void *setB);
 602  605  extern void print_x86_featureset(void *featureset);
 603  606  
 604  607  
↓ open down ↓ 64 lines elided ↑ open up ↑
 669  672  extern uint_t cpuid_get_ncpu_sharing_last_cache(struct cpu *);
 670  673  extern id_t cpuid_get_last_lvl_cacheid(struct cpu *);
 671  674  extern int cpuid_get_chipid(struct cpu *);
 672  675  extern id_t cpuid_get_coreid(struct cpu *);
 673  676  extern int cpuid_get_pkgcoreid(struct cpu *);
 674  677  extern int cpuid_get_clogid(struct cpu *);
 675  678  extern int cpuid_get_cacheid(struct cpu *);
 676  679  extern uint32_t cpuid_get_apicid(struct cpu *);
 677  680  extern uint_t cpuid_get_procnodeid(struct cpu *cpu);
 678  681  extern uint_t cpuid_get_procnodes_per_pkg(struct cpu *cpu);
      682 +extern uint_t cpuid_get_compunitid(struct cpu *cpu);
      683 +extern uint_t cpuid_get_cores_per_compunit(struct cpu *cpu);
 679  684  extern int cpuid_is_cmt(struct cpu *);
 680  685  extern int cpuid_syscall32_insn(struct cpu *);
 681  686  extern int getl2cacheinfo(struct cpu *, int *, int *, int *);
 682  687  
 683  688  extern uint32_t cpuid_getchiprev(struct cpu *);
 684  689  extern const char *cpuid_getchiprevstr(struct cpu *);
 685  690  extern uint32_t cpuid_getsockettype(struct cpu *);
 686  691  extern const char *cpuid_getsocketstr(struct cpu *);
 687  692  
 688  693  extern int cpuid_have_cr8access(struct cpu *);
↓ open down ↓ 102 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX