x86: Add support for partial contexts [1/2]
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 2 Dec 2015 17:20:01 +0000 (12:20 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 8 Dec 2015 20:59:08 +0000 (15:59 -0500)
commitc420c418ab338667387909bb4116cc2c61088f2c
treeae5f2c727f48d35db5f2bf2e0964e5a91133cebc
parent2f800850edb13eb9c8576e83b74192c4275b1e34
x86: Add support for partial contexts [1/2]

This adds the arch-specific handling for partial contexts within the
kernel's C code.  As of this commit, there are no partial contexts;
everything that comes in from trapentry62.S is a full context.

For hardware and software contexts, the distinction in x86 is whether or
not TLS MSRs are dealt with.  For partial contexts, GS is the kernel's
desired GS, MSR_KERNEL_GS_BASE is the user's old GS, and FS is the user's
FS.  The TF's GS and FS are 0.  After finalization, the GS is still the
kernel's GS.  MSR_KERNEL_GS_BASE is the kernel's GS, and the TF has the
user's GS and FS.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/arch/x86/process64.c
kern/arch/x86/ros/trapframe64.h
kern/arch/x86/trap64.c
kern/arch/x86/trap64.h