>>>>> On Thu, 20 Sep 2001 05:16:43 +0200, Ralf Baechle <ralf@oss.sgi.com> said:
>> BTW, I can not see any point in copying FCR31 to r0. What is a
>> purpose of the cfc1 instruction?
ralf> On CPUs with imprecise exceptions a FPU exception might still be
ralf> pending and possibly be taken arbitrarily delayed. The cfc1
ralf> instruction serves as an exception barrier for such exceptions.
ralf> At this time TFP is the only CPU which features imprecise
ralf> exceptions.
I see. Thanks for your quick answer.
And I wrote wrong thing in my previous mail. What I wanted to say is:
diff -ur linux.sgi/arch/mips/kernel/process.c linux/arch/mips/kernel/process.c
--- linux.sgi/arch/mips/kernel/process.c Sun Aug 5 23:39:09 2001
+++ linux/arch/mips/kernel/process.c Thu Sep 20 12:54:52 2001
@@ -56,8 +56,10 @@
{
/* Forget lazy fpu state */
if (last_task_used_math == current) {
- set_cp0_status(ST0_CU1);
- __asm__ __volatile__("cfc1\t$0,$31");
+ if (mips_cpu.options & MIPS_CPU_FPU) {
+ set_cp0_status(ST0_CU1);
+ __asm__ __volatile__("cfc1\t$0,$31");
+ }
last_task_used_math = NULL;
}
}
@@ -66,8 +68,10 @@
{
/* Forget lazy fpu state */
if (last_task_used_math == current) {
- set_cp0_status(ST0_CU1);
- __asm__ __volatile__("cfc1\t$0,$31");
+ if (mips_cpu.options & MIPS_CPU_FPU) {
+ set_cp0_status(ST0_CU1);
+ __asm__ __volatile__("cfc1\t$0,$31");
+ }
last_task_used_math = NULL;
}
}
---
As Florian Lohoff reported, there are CPUs require this patch.
---
Atsushi Nemoto
|