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
|