diff options
author | dfr <dfr@FreeBSD.org> | 1999-11-10 21:14:25 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 1999-11-10 21:14:25 +0000 |
commit | 6dfb400106d416bb310e15eb5a66dab9502bab9a (patch) | |
tree | 915e859019352304de1c4ade9813a58bd9557a3c /sys/alpha/include/cpu.h | |
parent | 8b2acdd5d2346477a882467bd48950cc6c793efa (diff) | |
download | FreeBSD-src-6dfb400106d416bb310e15eb5a66dab9502bab9a.zip FreeBSD-src-6dfb400106d416bb310e15eb5a66dab9502bab9a.tar.gz |
Re-organise the code which manages the owner of the FP state (fpcurproc).
The old code was spread out through the machdep code and was sloppy about
enabling and disabling the FEN bit (which controls access to the FP
register set). This caused a DIAGNOSTIC warning "DANGER WILL ROBINSON:
FEN SET IN cpu_fork!" sometimes when operating under high loads and could
conceivably lead to processes getting incorrect FP results.
The new code is much more strict about the FEN bit and makes sure that
*only* fpcurproc ever has it enabled. This also allows us to remove a
section of code from the exception_return path which might improve
performance marginally.
Reviewed by: gallatin
Diffstat (limited to 'sys/alpha/include/cpu.h')
-rw-r--r-- | sys/alpha/include/cpu.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/alpha/include/cpu.h b/sys/alpha/include/cpu.h index cddefe1..b9ff12d 100644 --- a/sys/alpha/include/cpu.h +++ b/sys/alpha/include/cpu.h @@ -148,6 +148,10 @@ void XentSys __P((u_int64_t, u_int64_t, u_int64_t)); /* MAGIC */ void XentUna __P((u_int64_t, u_int64_t, u_int64_t)); /* MAGIC */ void alpha_init __P((u_long, u_long, u_long, u_long, u_long)); int alpha_pa_access __P((u_long)); +void alpha_fpstate_check __P((struct proc *p)); +void alpha_fpstate_save __P((struct proc *p, int write)); +void alpha_fpstate_drop __P((struct proc *p)); +void alpha_fpstate_switch __P((struct proc *p)); void ast __P((struct trapframe *)); int badaddr __P((void *, size_t)); int badaddr_read __P((void *, size_t, void *)); |