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
        
*** 43,65 ****
         process identified by ph.  ps_lgetregs() gets the general registers of
         the LWP identified by lid, and ps_lsetregs() sets them. ps_lgetfpregs()
         gets the LWP's floating point register set, while ps_lsetfpregs() sets
         it.
  
!    SPARC Only
!        ps_lgetxregsize(), ps_lgetxregs(), and ps_lsetxregs() are SPARC-
!        specific. They do not need to be defined by a controlling process on
!        non-SPARC architecture. ps_lgetxregsize() returns in *xregsize the size
!        of the architecture-dependent extra state registers. ps_lgetxregs()
!        gets the extra state registers, and ps_lsetxregs() sets them.
  
  RETURN VALUES
         PS_OK
                         The call returned successfully.
  
  
!        PS_NOFPREGS
                         Floating point registers are neither available for this
                         architecture nor for this process.
  
  
         PS_NOXREGS
--- 43,70 ----
         process identified by ph.  ps_lgetregs() gets the general registers of
         the LWP identified by lid, and ps_lsetregs() sets them. ps_lgetfpregs()
         gets the LWP's floating point register set, while ps_lsetfpregs() sets
         it.
  
!        ps_lgetxregsize(), ps_lgetxregs(), and ps_lsetxregs() are used to get
!        and set the extended register set. Support for an extended register set
!        depends on the instruction-set archicture. On platforms without support
!        for these, controlling processes wlil still need to define them;
!        however, they are allowed to simply return errors.
  
+        ps_lgetxregsize() returns in *xregsize the size of the architecture-
+        dependent extra state registers. ps_lgetxregs() gets the extra state
+        registers, and ps_lsetxregs() sets them. When getting the registers,
+        the size of xregset must be at least the size returned by
+        ps_lgetxregsize().
+ 
  RETURN VALUES
         PS_OK
                         The call returned successfully.
  
  
!        PS_NOFREGS
                         Floating point registers are neither available for this
                         architecture nor for this process.
  
  
         PS_NOXREGS
*** 84,89 ****
         +---------------+-----------------+
  
  SEE ALSO
         libc_db(3LIB), proc_service(3PROC), attributes(7), threads(7)
  
!                               September 12, 2020            PS_LGETREGS(3PROC)
--- 89,94 ----
         +---------------+-----------------+
  
  SEE ALSO
         libc_db(3LIB), proc_service(3PROC), attributes(7), threads(7)
  
!                                January 23, 2023             PS_LGETREGS(3PROC)