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
        
@@ -25,11 +25,11 @@
 /*
  * Copyright 2012 DEY Storage Systems, Inc.  All rights reserved.
  * Copyright (c) 2013 by Delphix. All rights reserved.
  * Copyright 2018 Joyent, Inc.
  * Copyright 2020 OmniOS Community Edition (OmniOSce) Association.
- * Copyright 2021 Oxide Computer Company
+ * Copyright 2023 Oxide Computer Company
  */
 
 #ifndef _PCONTROL_H
 #define _PCONTROL_H
 
@@ -142,13 +142,14 @@
         list_node_t lwp_list;   /* linked list */
         lwpid_t lwp_id;         /* lwp identifier */
         lwpsinfo_t lwp_psinfo;  /* /proc/<pid>/lwp/<lwpid>/lwpsinfo data */
         lwpstatus_t lwp_status; /* /proc/<pid>/lwp/<lwpid>/lwpstatus data */
         char lwp_name[THREAD_NAME_MAX];
+        prxregset_t *lwp_xregs; /* /proc/<pid>/lwp/<lwpid>/xregs data */
+        size_t lwp_xregsize;
 #if defined(sparc) || defined(__sparc)
         gwindows_t *lwp_gwins;  /* /proc/<pid>/lwp/<lwpid>/gwindows data */
-        prxregset_t *lwp_xregs; /* /proc/<pid>/lwp/<lwpid>/xregs data */
         int64_t *lwp_asrs;      /* /proc/<pid>/lwp/<lwpid>/asrs data */
 #endif
 } lwp_info_t;
 
 typedef struct fd_info {
@@ -296,10 +297,12 @@
         size_t);
 
 extern  int     Padd_mapping(struct ps_prochandle *, off64_t, file_info_t *,
     prmap_t *);
 extern  void    Psort_mappings(struct ps_prochandle *);
+extern  struct ps_lwphandle *Lfind(struct ps_prochandle *, lwpid_t);
+extern  int     Lstopstatus(struct ps_lwphandle *, long, uint_t);
 
 extern char     procfs_path[PATH_MAX];
 
 /*
  * Architecture-dependent definition of the breakpoint instruction.