On 06/02/2015 12:50, Maciej W. Rozycki wrote: > Use the default FCSR value in mask probing, avoiding an FPE exception > where reset has left any exception enable and their corresponding cause > bits set and the register is then rewritten with these bits active. > > Signed-off-by: Maciej W. Rozycki <macro@xxxxxxxxxxxxxx> > --- > linux-mips-fcsr-mask-fix.diff > Index: linux-org-test/arch/mips/kernel/cpu-probe.c > =================================================================== > --- linux-org-test.orig/arch/mips/kernel/cpu-probe.c 2015-06-01 00:43:32.000000000 +0100 > +++ linux-org-test/arch/mips/kernel/cpu-probe.c 2015-06-02 12:14:10.088786000 +0100 > @@ -74,13 +74,12 @@ static inline void cpu_set_fpu_fcsr_mask > { > unsigned long sr, mask, fcsr, fcsr0, fcsr1; > > + fcsr = c->fpu_csr31; > mask = FPU_CSR_ALL_X | FPU_CSR_ALL_E | FPU_CSR_ALL_S | FPU_CSR_RM; > > sr = read_c0_status(); > __enable_fpu(FPU_AS_IS); > > - fcsr = read_32bit_cp1_register(CP1_STATUS); > - > fcsr0 = fcsr & mask; > write_32bit_cp1_register(CP1_STATUS, fcsr0); > fcsr0 = read_32bit_cp1_register(CP1_STATUS); > Tested-by: Joshua Kinard <kumba@xxxxxxxxxx>