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

*** 27,36 **** --- 27,37 ---- * Copyright 2012 DEY Storage Systems, Inc. All rights reserved. * Copyright 2019 Joyent, Inc. * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright 2019, Carlos Neira <cneirabustos@gmail.com> * Copyright 2020 OmniOS Community Edition (OmniOSce) Association. + * Copyright 2023 Oxide Computer Company */ /* * Interfaces available from the process control library, libproc. */
*** 331,340 **** --- 332,348 ---- extern int Lstack(struct ps_lwphandle *, stack_t *); extern int Lmain_stack(struct ps_lwphandle *, stack_t *); extern int Lalt_stack(struct ps_lwphandle *, stack_t *); + extern int Lgetregs(struct ps_lwphandle *, prgregset_t *); + extern int Lsetregs(struct ps_lwphandle *, const prgregset_t *); + extern int Lgetfpregs(struct ps_lwphandle *, prfpregset_t *); + extern int Lsetfpregs(struct ps_lwphandle *, const prfpregset_t *); + extern int Lgetxregs(struct ps_lwphandle *, prxregset_t **, size_t *); + extern int Lsetxregs(struct ps_lwphandle *, const prxregset_t *, size_t); + /* * Function prototypes for system calls forced on the victim process. */ extern int pr_open(struct ps_prochandle *, const char *, int, mode_t); extern int pr_creat(struct ps_prochandle *, const char *, mode_t);
*** 417,431 **** extern int Plwp_getfpregs(struct ps_prochandle *, lwpid_t, prfpregset_t *); extern int Plwp_setfpregs(struct ps_prochandle *, lwpid_t, const prfpregset_t *); ! #if defined(__sparc) ! extern int Plwp_getxregs(struct ps_prochandle *, lwpid_t, prxregset_t *); ! extern int Plwp_setxregs(struct ps_prochandle *, lwpid_t, const prxregset_t *); ! extern int Plwp_getgwindows(struct ps_prochandle *, lwpid_t, gwindows_t *); #if defined(__sparcv9) extern int Plwp_getasrs(struct ps_prochandle *, lwpid_t, asrset_t); extern int Plwp_setasrs(struct ps_prochandle *, lwpid_t, const asrset_t); --- 425,441 ---- extern int Plwp_getfpregs(struct ps_prochandle *, lwpid_t, prfpregset_t *); extern int Plwp_setfpregs(struct ps_prochandle *, lwpid_t, const prfpregset_t *); ! extern int Plwp_getxregs(struct ps_prochandle *, lwpid_t, prxregset_t **, ! size_t *); ! extern void Plwp_freexregs(struct ps_prochandle *, prxregset_t *, size_t); ! extern int Plwp_setxregs(struct ps_prochandle *, lwpid_t, const prxregset_t *, ! size_t); ! #if defined(__sparc) extern int Plwp_getgwindows(struct ps_prochandle *, lwpid_t, gwindows_t *); #if defined(__sparcv9) extern int Plwp_getasrs(struct ps_prochandle *, lwpid_t, asrset_t); extern int Plwp_setasrs(struct ps_prochandle *, lwpid_t, const asrset_t);