diff options
Diffstat (limited to 'usr/src/uts/intel/sys/pcb.h')
-rw-r--r-- | usr/src/uts/intel/sys/pcb.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/usr/src/uts/intel/sys/pcb.h b/usr/src/uts/intel/sys/pcb.h index defd116eba..e7e2e2cdce 100644 --- a/usr/src/uts/intel/sys/pcb.h +++ b/usr/src/uts/intel/sys/pcb.h @@ -21,6 +21,7 @@ /* * Copyright (c) 1992, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, Joyent, Inc. */ #ifndef _SYS_PCB_H @@ -51,7 +52,6 @@ typedef struct pcb { uint_t pcb_flags; /* state flags; cleared on fork */ greg_t pcb_drstat; /* status debug register (%dr6) */ unsigned char pcb_instr; /* /proc: instruction at stop */ -#if defined(__amd64) unsigned char pcb_rupdate; /* new register values in pcb -> regs */ uintptr_t pcb_fsbase; uintptr_t pcb_gsbase; @@ -59,7 +59,6 @@ typedef struct pcb { selector_t pcb_es; selector_t pcb_fs; selector_t pcb_gs; -#endif /* __amd64 */ user_desc_t pcb_fsdesc; /* private per-lwp %fs descriptors */ user_desc_t pcb_gsdesc; /* private per-lwp %gs descriptors */ } pcb_t; @@ -77,6 +76,21 @@ typedef struct pcb { #define REQUEST_NOSTEP 0x200 /* request pending to disable single-step */ #define ASYNC_HWERR 0x400 /* hardware error has corrupted context */ +/* pcb_rupdate values */ +#define PCB_UPDATE_SEGS 0x01 /* Update segment registers */ +#define PCB_UPDATE_FPU 0x02 /* Update FPU registers */ + +#define PCB_SET_UPDATE_SEGS(pcb) ((pcb)->pcb_rupdate |= PCB_UPDATE_SEGS) +#define PCB_SET_UPDATE_FPU(pcb) ((pcb)->pcb_rupdate |= PCB_UPDATE_FPU) +#define PCB_NEED_UPDATE_SEGS(pcb) \ + (((pcb)->pcb_rupdate & PCB_UPDATE_SEGS) != 0) +#define PCB_NEED_UPDATE_FPU(pcb) \ + (((pcb)->pcb_rupdate & PCB_UPDATE_FPU) != 0) +#define PCB_NEED_UPDATE(pcb) \ + (PCB_NEED_UPDATE_FPU(pcb) || PCB_NEED_UPDATE_SEGS(pcb)) +#define PCB_CLEAR_UPDATE_SEGS(pcb) ((pcb)->pcb_rupdate &= ~PCB_UPDATE_SEGS) +#define PCB_CLEAR_UPDATE_FPU(pcb) ((pcb)->pcb_rupdate &= ~PCB_UPDATE_FPU) + /* fpu_flags */ #define FPU_EN 0x1 /* flag signifying fpu in use */ #define FPU_VALID 0x2 /* fpu_regs has valid fpu state */ |