From eb8417436147d7c823521899910b5651dfb66044 Mon Sep 17 00:00:00 2001 From: Chris Dearman Date: Thu, 1 Feb 2007 19:54:13 +0000 Subject: [PATCH] --- yaml --- r: 46135 b: refs/heads/master c: 6d6671066a311703bca1b91645bb1e04cc983387 h: refs/heads/master i: 46133: 198f430d9f1fd858b8816193adfd897a713d574a 46131: 625eda5a4d3fa42b38aea53a4202dc4344f4d641 46127: 90300ee5e538243911d6c6c3cf7c534bc3289509 v: v3 --- [refs] | 2 +- trunk/arch/mips/kernel/r4k_fpu.S | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index c90eb0acda31..955cb93dc609 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b86b30f81c7601d9a410d2ce0c64d9ba50d673ae +refs/heads/master: 6d6671066a311703bca1b91645bb1e04cc983387 diff --git a/trunk/arch/mips/kernel/r4k_fpu.S b/trunk/arch/mips/kernel/r4k_fpu.S index 880fa6e841ee..8b5ccfa99dd1 100644 --- a/trunk/arch/mips/kernel/r4k_fpu.S +++ b/trunk/arch/mips/kernel/r4k_fpu.S @@ -114,6 +114,14 @@ LEAF(_save_fp_context32) */ LEAF(_restore_fp_context) EX lw t0, SC_FPC_CSR(a0) + + /* Fail if the CSR has exceptions pending */ + srl t1, t0, 5 + and t1, t0 + andi t1, 0x1f << 7 + bnez t1, fault + nop + #ifdef CONFIG_64BIT EX ldc1 $f1, SC_FPREGS+8(a0) EX ldc1 $f3, SC_FPREGS+24(a0) @@ -157,6 +165,14 @@ LEAF(_restore_fp_context) LEAF(_restore_fp_context32) /* Restore an o32 sigcontext. */ EX lw t0, SC32_FPC_CSR(a0) + + /* Fail if the CSR has exceptions pending */ + srl t1, t0, 5 + and t1, t0 + andi t1, 0x1f << 7 + bnez t1, fault + nop + EX ldc1 $f0, SC32_FPREGS+0(a0) EX ldc1 $f2, SC32_FPREGS+16(a0) EX ldc1 $f4, SC32_FPREGS+32(a0)