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 *);