24  * Copyright 2020 Joyent, Inc.
  25  */
  26 
  27 #ifndef _SYS_PCB_H
  28 #define _SYS_PCB_H
  29 
  30 #include <sys/regset.h>
  31 #include <sys/segments.h>
  32 #ifndef _ASM
  33 #include <sys/fp.h>       /* kfpu_t */
  34 #endif
  35 
  36 #ifdef  __cplusplus
  37 extern "C" {
  38 #endif
  39 
  40 #ifndef _ASM
  41 typedef struct fpu_ctx {
  42         kfpu_t          fpu_regs;       /* kernel save area for FPU */
  43         uint64_t        fpu_xsave_mask; /* xsave mask for FPU/SSE/AVX */
  44 #if defined(__i386)
  45         uint64_t        fpu_padding;    /* fix 32bit libmicro regression */
  46 #endif
  47         uint_t          fpu_flags;      /* FPU state flags */
  48 } fpu_ctx_t;
  49 
  50 typedef struct pcb {
  51         fpu_ctx_t       pcb_fpu;        /* fpu state */
  52         uint_t          pcb_flags;      /* state flags; cleared on fork */
  53         greg_t          pcb_drstat;     /* status debug register (%dr6) */
  54         unsigned char   pcb_instr;      /* /proc: instruction at stop */
  55         unsigned char   pcb_rupdate;    /* new register values in pcb -> regs */
  56         uintptr_t       pcb_fsbase;
  57         uintptr_t       pcb_gsbase;
  58         selector_t      pcb_ds;
  59         selector_t      pcb_es;
  60         selector_t      pcb_fs;
  61         selector_t      pcb_gs;
  62         user_desc_t     pcb_fsdesc;     /* private per-lwp %fs descriptors */
  63         user_desc_t     pcb_gsdesc;     /* private per-lwp %gs descriptors */
  64 } pcb_t;
  65 
  66 #endif /* ! _ASM */
  67 
 
 | 
 
 
  24  * Copyright 2020 Joyent, Inc.
  25  */
  26 
  27 #ifndef _SYS_PCB_H
  28 #define _SYS_PCB_H
  29 
  30 #include <sys/regset.h>
  31 #include <sys/segments.h>
  32 #ifndef _ASM
  33 #include <sys/fp.h>       /* kfpu_t */
  34 #endif
  35 
  36 #ifdef  __cplusplus
  37 extern "C" {
  38 #endif
  39 
  40 #ifndef _ASM
  41 typedef struct fpu_ctx {
  42         kfpu_t          fpu_regs;       /* kernel save area for FPU */
  43         uint64_t        fpu_xsave_mask; /* xsave mask for FPU/SSE/AVX */
  44         uint_t          fpu_flags;      /* FPU state flags */
  45         void            *fpu_signal;    /* copyin area for signal handling */
  46 } fpu_ctx_t;
  47 
  48 typedef struct pcb {
  49         fpu_ctx_t       pcb_fpu;        /* fpu state */
  50         uint_t          pcb_flags;      /* state flags; cleared on fork */
  51         greg_t          pcb_drstat;     /* status debug register (%dr6) */
  52         unsigned char   pcb_instr;      /* /proc: instruction at stop */
  53         unsigned char   pcb_rupdate;    /* new register values in pcb -> regs */
  54         uintptr_t       pcb_fsbase;
  55         uintptr_t       pcb_gsbase;
  56         selector_t      pcb_ds;
  57         selector_t      pcb_es;
  58         selector_t      pcb_fs;
  59         selector_t      pcb_gs;
  60         user_desc_t     pcb_fsdesc;     /* private per-lwp %fs descriptors */
  61         user_desc_t     pcb_gsdesc;     /* private per-lwp %gs descriptors */
  62 } pcb_t;
  63 
  64 #endif /* ! _ASM */
  65 
 
 |