Kernel properly handles floating point (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 17 Apr 2013 23:07:44 +0000 (16:07 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 17 Apr 2013 23:07:44 +0000 (16:07 -0700)
commit7de7e07764f21019b0bbd46cd01ee22042df84d9
tree9f42184fceb4de7b3ed794b365c3aa4632f99d04
parent0d79ec905dec33fb999e0b98d603a83648439bc4
Kernel properly handles floating point (XCC)

The kernel saves and restores floating point rather aggressively.  There
are a couple corner cases where we can avoid saving state, such as when
a uthread makes a syscall and gets preempted before the call returns.

The use of the TS flag is actually quite problematic.  We'd need to
reflect it to userspace via VCPD, and it would end up acting as a taint
if uthreads migrate between vcores.  Keep in mind that userspace can't
reset TS on its own, and any attempt to save callee-saved FP state (like
on a user-level context switch) will result in a trap, forcing the FPU
to be turned on.

Rebuild parlib and all applications.
kern/arch/i686/trap.h
kern/arch/riscv/env.c
kern/arch/sparc/env.c
kern/include/process.h
kern/include/ros/event.h
kern/include/trap.h
kern/src/kthread.c
kern/src/process.c
kern/src/schedule.c
user/parlib/uthread.c