summaryrefslogtreecommitdiffstats
path: root/sys/amd64/include/pcb.h
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2004-05-16 22:43:57 +0000
committerpeter <peter@FreeBSD.org>2004-05-16 22:43:57 +0000
commit8b77ed77bd073cb3767a57552844fed3125fcfa3 (patch)
treebefcd9f4b2350e266f7fe945e786539e307d0ba3 /sys/amd64/include/pcb.h
parent42f5ddc2f4e7e2251c8969f6e4873c73f48a8b12 (diff)
downloadFreeBSD-src-8b77ed77bd073cb3767a57552844fed3125fcfa3.zip
FreeBSD-src-8b77ed77bd073cb3767a57552844fed3125fcfa3.tar.gz
Checkpoint some of what I was starting to tinker with for having some
different context support for 32 vs 64 bit processes. This simply omits the save/restore of the segment selector registers for non 32 bit processes. This avoids the rdmsr/rwmsr juggling when restoring %gs clobbers the kernel msr that holds the gsbase. However, I suspect it might be better to conditionally do this at user<->kernel transition where we wouldn't need to do the juggling in the first place. Or have per-thread extended context save/restore hooks.
Diffstat (limited to 'sys/amd64/include/pcb.h')
-rw-r--r--sys/amd64/include/pcb.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/amd64/include/pcb.h b/sys/amd64/include/pcb.h
index de9bad8..73d8aa5 100644
--- a/sys/amd64/include/pcb.h
+++ b/sys/amd64/include/pcb.h
@@ -71,6 +71,7 @@ struct pcb {
u_long pcb_flags;
#define PCB_DBREGS 0x02 /* process using debug registers */
#define PCB_FPUINITDONE 0x08 /* fpu state is initialized */
+#define PCB_32BIT 0x40 /* process has 32 bit context (segs etc) */
#define PCB_FULLCTX 0x80 /* full context restore on sysret */
caddr_t pcb_onfault; /* copyin/out fault recovery */
OpenPOWER on IntegriCloud