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
        
@@ -26,11 +26,11 @@
 
 /*
  * Copyright 2012 DEY Storage Systems, Inc.  All rights reserved.
  * Copyright 2018 Joyent, Inc.
  * Copyright 2020 OmniOS Community Edition (OmniOSce) Association.
- * Copyright 2022 Oxide Computer Company
+ * Copyright 2023 Oxide Computer Company
  */
 
 #include <sys/types.h>
 #include <sys/param.h>
 #include <sys/thread.h>
@@ -136,11 +136,11 @@
         mutex_exit(&p->p_ldtlock);
         if (size != 0)
                 v[0].p_filesz += sizeof (Note) + roundup(size, sizeof (Word));
 #endif  /* __i386_COMPAT */
 
-        if ((size = prhasx(p)? prgetprxregsize(p) : 0) != 0)
+        if ((size = prhasx(p) ? prgetprxregsize(p) : 0) != 0)
                 v[0].p_filesz += nlwp * sizeof (Note)
                     + nlwp * roundup(size, sizeof (Word));
 
 #if defined(__sparc)
         /*
@@ -195,11 +195,11 @@
                 struct utsname  uts;
                 prsecflags_t    psecflags;
                 prupanic_t      upanic;
         } *bigwad;
 
-        size_t xregsize = prhasx(p)? prgetprxregsize(p) : 0;
+        size_t xregsize = prhasx(p) ? prgetprxregsize(p) : 0;
         size_t crsize = sizeof (prcred_t) + sizeof (gid_t) * (ngroups_max - 1);
         size_t psize = prgetprivsize();
         size_t bigsize = MAX(psize, MAX(sizeof (*bigwad),
             MAX(xregsize, crsize)));
 
@@ -572,11 +572,11 @@
                                 goto done;
                 }
 #endif /* __sparc */
 
                 if (xregsize) {
-                        prgetprxregs(lwp, bigwad->xregs);
+                        prgetprxregs(lwp, (prxregset_t *)bigwad->xregs);
                         error = elfnote(vp, &offset, NT_PRXREG,
                             xregsize, bigwad->xregs, rlimit, credp);
                         if (error)
                                 goto done;
                 }