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

Split Close
Expand all
Collapse all
          --- old/usr/src/man/man3proc/ps_lgetregs.3proc.man.txt
          +++ new/usr/src/man/man3proc/ps_lgetregs.3proc.man.txt
↓ open down ↓ 37 lines elided ↑ open up ↑
  38   38  
  39   39  DESCRIPTION
  40   40         ps_lgetregs(), ps_lsetregs(), ps_lgetfpregs(), ps_lsetfpregs(),
  41   41         ps_lgetxregsize(), ps_lgetxregs(), ps_lsetxregs() read and write
  42   42         register sets from lightweight processes (LWPs) within the target
  43   43         process identified by ph.  ps_lgetregs() gets the general registers of
  44   44         the LWP identified by lid, and ps_lsetregs() sets them. ps_lgetfpregs()
  45   45         gets the LWP's floating point register set, while ps_lsetfpregs() sets
  46   46         it.
  47   47  
  48      -   SPARC Only
  49      -       ps_lgetxregsize(), ps_lgetxregs(), and ps_lsetxregs() are SPARC-
  50      -       specific. They do not need to be defined by a controlling process on
  51      -       non-SPARC architecture. ps_lgetxregsize() returns in *xregsize the size
  52      -       of the architecture-dependent extra state registers. ps_lgetxregs()
  53      -       gets the extra state registers, and ps_lsetxregs() sets them.
       48 +       ps_lgetxregsize(), ps_lgetxregs(), and ps_lsetxregs() are used to get
       49 +       and set the extended register set. Support for an extended register set
       50 +       depends on the instruction-set archicture. On platforms without support
       51 +       for these, controlling processes wlil still need to define them;
       52 +       however, they are allowed to simply return errors.
  54   53  
       54 +       ps_lgetxregsize() returns in *xregsize the size of the architecture-
       55 +       dependent extra state registers. ps_lgetxregs() gets the extra state
       56 +       registers, and ps_lsetxregs() sets them. When getting the registers,
       57 +       the size of xregset must be at least the size returned by
       58 +       ps_lgetxregsize().
       59 +
  55   60  RETURN VALUES
  56   61         PS_OK
  57   62                         The call returned successfully.
  58   63  
  59   64  
  60      -       PS_NOFPREGS
       65 +       PS_NOFREGS
  61   66                         Floating point registers are neither available for this
  62   67                         architecture nor for this process.
  63   68  
  64   69  
  65   70         PS_NOXREGS
  66   71                         Extra state registers are not available on this
  67   72                         architecture.
  68   73  
  69   74  
  70   75         PS_ERR
↓ open down ↓ 8 lines elided ↑ open up ↑
  79   84  
  80   85         +---------------+-----------------+
  81   86         |ATTRIBUTE TYPE | ATTRIBUTE VALUE |
  82   87         +---------------+-----------------+
  83   88         |MT Level       | Safe            |
  84   89         +---------------+-----------------+
  85   90  
  86   91  SEE ALSO
  87   92         libc_db(3LIB), proc_service(3PROC), attributes(7), threads(7)
  88   93  
  89      -                              September 12, 2020            PS_LGETREGS(3PROC)
       94 +                               January 23, 2023             PS_LGETREGS(3PROC)
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX