diff options
author | peter <peter@FreeBSD.org> | 2004-05-16 22:43:57 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 2004-05-16 22:43:57 +0000 |
commit | 8b77ed77bd073cb3767a57552844fed3125fcfa3 (patch) | |
tree | befcd9f4b2350e266f7fe945e786539e307d0ba3 /sys/amd64/include/pcb.h | |
parent | 42f5ddc2f4e7e2251c8969f6e4873c73f48a8b12 (diff) | |
download | FreeBSD-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.h | 1 |
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 */ |