Support partial contexts
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 20 Nov 2015 00:22:08 +0000 (16:22 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 8 Dec 2015 20:59:08 +0000 (15:59 -0500)
commit2f800850edb13eb9c8576e83b74192c4275b1e34
tree9fa7cbe916eb343096c71b235a2ffe8f14f7cf06
parentd62e6ef99585a9d455f6d6059eb816939b545b14
Support partial contexts

Partial contexts are those where the full context is split between the
parts in the struct and the parts still loaded in hardware.

When entering the kernel, the kernel only needs to save enough of the
context so that it can perform its work.  The hardware may have other
bits of context that remain, and we'll copy out that state once we think
we are not going to return to the (previously) current context.

The rule is that if we ever either:
1) run the context somewhere else, or
2) run another context here

then we need to finalize the context, by ripping it off the core
completely.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/arch/riscv/trap.h
kern/arch/x86/trap64.h
kern/include/trap.h
kern/src/process.c
kern/src/trap.c