Print this page
15254 %ymm registers not restored after signal handler
15367 x86 getfpregs() summons corrupting %xmm ghosts
15333 want x86 /proc xregs support (libc_db, libproc, mdb, etc.)
15336 want libc functions for extended ucontext_t
15334 want ps_lwphandle-specific reg routines
15328 FPU_CW_INIT mistreats reserved bit
15335 i86pc fpu_subr.c isn't really platform-specific
15332 setcontext(2) isn't actually noreturn
15331 need <sys/stdalign.h>
Change-Id: I7060aa86042dfb989f77fc3323c065ea2eafa9ad
Conflicts:
    usr/src/uts/common/fs/proc/prcontrol.c
    usr/src/uts/intel/os/archdep.c
    usr/src/uts/intel/sys/ucontext.h
    usr/src/uts/intel/syscall/getcontext.c
        
*** 1435,1459 ****
  #define INTC_MODEL_DENVERTON            0x5f
  #define INTC_MODEL_GEMINI_LAKE          0x7a
  
  /*
   * xgetbv/xsetbv support
!  * See section 13.3 in vol. 1 of the Intel devlopers manual.
   */
  
  #define XFEATURE_ENABLED_MASK   0x0
  /*
   * XFEATURE_ENABLED_MASK values (eax)
   * See setup_xfem().
   */
! #define XFEATURE_LEGACY_FP      0x1
! #define XFEATURE_SSE            0x2
! #define XFEATURE_AVX            0x4
! #define XFEATURE_MPX            0x18    /* 2 bits, both 0 or 1 */
! #define XFEATURE_AVX512         0xe0    /* 3 bits, all 0 or 1 */
          /* bit 8 unused */
! #define XFEATURE_PKRU           0x200
  #define XFEATURE_FP_ALL \
          (XFEATURE_LEGACY_FP | XFEATURE_SSE | XFEATURE_AVX | XFEATURE_MPX | \
          XFEATURE_AVX512 | XFEATURE_PKRU)
  
  /*
--- 1435,1473 ----
  #define INTC_MODEL_DENVERTON            0x5f
  #define INTC_MODEL_GEMINI_LAKE          0x7a
  
  /*
   * xgetbv/xsetbv support
!  * See section 13.3 in vol. 1 of the Intel Developer's manual.
   */
  
  #define XFEATURE_ENABLED_MASK   0x0
  /*
   * XFEATURE_ENABLED_MASK values (eax)
   * See setup_xfem().
   */
! #define XFEATURE_LEGACY_FP      (1 << 0)
! #define XFEATURE_SSE            (1 << 1)
! #define XFEATURE_AVX            (1 << 2)
! /*
!  * MPX is meant to be all or nothing, therefore for most of the kernel use the
!  * following definition.
!  */
! #define XFEATURE_MPX_BNDREGS    (1 << 3)
! #define XFEATURE_MPX_BNDCSR     (1 << 4)
! #define XFEATURE_MPX            (XFEATURE_MPX_BNDREGS | XFEATURE_MPX_BNDCSR)
! /*
!  * AVX512 is meant to be all or nothing, therefore for most of the kernel use
!  * the following definition.
!  */
! #define XFEATURE_AVX512_OPMASK  (1 << 5)
! #define XFEATURE_AVX512_ZMM     (1 << 6)
! #define XFEATURE_AVX512_HI_ZMM  (1 << 7)
! #define XFEATURE_AVX512         (XFEATURE_AVX512_OPMASK | \
!         XFEATURE_AVX512_ZMM | XFEATURE_AVX512_HI_ZMM)
          /* bit 8 unused */
! #define XFEATURE_PKRU           (1 << 9)
  #define XFEATURE_FP_ALL \
          (XFEATURE_LEGACY_FP | XFEATURE_SSE | XFEATURE_AVX | XFEATURE_MPX | \
          XFEATURE_AVX512 | XFEATURE_PKRU)
  
  /*
*** 1574,1585 ****
  extern uint32_t cpuid_get_apicid(struct cpu *);
  extern uint_t cpuid_get_procnodeid(struct cpu *cpu);
  extern uint_t cpuid_get_procnodes_per_pkg(struct cpu *cpu);
  extern uint_t cpuid_get_compunitid(struct cpu *cpu);
  extern uint_t cpuid_get_cores_per_compunit(struct cpu *cpu);
! extern size_t cpuid_get_xsave_size();
! extern boolean_t cpuid_need_fp_excp_handling();
  extern int cpuid_is_cmt(struct cpu *);
  extern int cpuid_syscall32_insn(struct cpu *);
  extern int getl2cacheinfo(struct cpu *, int *, int *, int *);
  
  extern x86_chiprev_t cpuid_getchiprev(struct cpu *);
--- 1588,1600 ----
  extern uint32_t cpuid_get_apicid(struct cpu *);
  extern uint_t cpuid_get_procnodeid(struct cpu *cpu);
  extern uint_t cpuid_get_procnodes_per_pkg(struct cpu *cpu);
  extern uint_t cpuid_get_compunitid(struct cpu *cpu);
  extern uint_t cpuid_get_cores_per_compunit(struct cpu *cpu);
! extern size_t cpuid_get_xsave_size(void);
! extern void cpuid_get_xsave_info(uint64_t, size_t *, size_t *);
! extern boolean_t cpuid_need_fp_excp_handling(void);
  extern int cpuid_is_cmt(struct cpu *);
  extern int cpuid_syscall32_insn(struct cpu *);
  extern int getl2cacheinfo(struct cpu *, int *, int *, int *);
  
  extern x86_chiprev_t cpuid_getchiprev(struct cpu *);