summaryrefslogtreecommitdiff
path: root/sys/amd64/include/pcb.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/amd64/include/pcb.h')
-rw-r--r--sys/amd64/include/pcb.h44
1 files changed, 22 insertions, 22 deletions
diff --git a/sys/amd64/include/pcb.h b/sys/amd64/include/pcb.h
index b26188a5bf70..4cc024054627 100644
--- a/sys/amd64/include/pcb.h
+++ b/sys/amd64/include/pcb.h
@@ -44,7 +44,6 @@
#include <machine/segments.h>
struct pcb {
- register_t pcb_cr3;
register_t pcb_r15;
register_t pcb_r14;
register_t pcb_r13;
@@ -55,50 +54,51 @@ struct pcb {
register_t pcb_rip;
register_t pcb_fsbase;
register_t pcb_gsbase;
+ register_t pcb_kgsbase;
u_long pcb_flags;
#define PCB_DBREGS 0x02 /* process using debug registers */
+#define PCB_KERNFPU 0x04 /* kernel uses fpu */
#define PCB_FPUINITDONE 0x08 /* fpu state is initialized */
+#define PCB_USERFPUINITDONE 0x10 /* fpu user state is initialized */
#define PCB_GS32BIT 0x20 /* linux gs switch */
#define PCB_32BIT 0x40 /* process has 32 bit context (segs etc) */
#define PCB_FULLCTX 0x80 /* full context restore on sysret */
- u_int64_t pcb_dr0;
- u_int64_t pcb_dr1;
- u_int64_t pcb_dr2;
- u_int64_t pcb_dr3;
- u_int64_t pcb_dr6;
- u_int64_t pcb_dr7;
+ register_t pcb_cr0;
+ register_t pcb_cr2;
+ register_t pcb_cr3;
+ register_t pcb_cr4;
+ register_t pcb_dr0;
+ register_t pcb_dr1;
+ register_t pcb_dr2;
+ register_t pcb_dr3;
+ register_t pcb_dr6;
+ register_t pcb_dr7;
- struct savefpu pcb_save;
uint16_t pcb_initial_fpucw;
caddr_t pcb_onfault; /* copyin/out fault recovery */
/* 32-bit segment descriptor */
- struct user_segment_descriptor pcb_gs32sd;
+ struct user_segment_descriptor pcb_gs32sd;
/* local tss, with i/o bitmap; NULL for common */
struct amd64tss *pcb_tssp;
+ struct savefpu *pcb_save;
char pcb_full_iret;
-};
-struct xpcb {
- struct pcb xpcb_pcb;
- register_t xpcb_cr0;
- register_t xpcb_cr2;
- register_t xpcb_cr4;
- register_t xpcb_kgsbase;
- struct region_descriptor xpcb_gdt;
- struct region_descriptor xpcb_idt;
- struct region_descriptor xpcb_ldt;
- uint16_t xpcb_tr;
+ struct region_descriptor pcb_gdt;
+ struct region_descriptor pcb_idt;
+ struct region_descriptor pcb_ldt;
+ uint16_t pcb_tr;
+
+ struct savefpu pcb_user_save;
};
#ifdef _KERNEL
struct trapframe;
void makectx(struct trapframe *, struct pcb *);
-void savectx(struct pcb *);
-int savectx2(struct xpcb *);
+int savectx(struct pcb *);
#endif
#endif /* _AMD64_PCB_H_ */