On Thu, Sep 20, 2001 at 12:13:16PM +0900, Atsushi Nemoto wrote:
> Following codes in exit_thread() and flush_thread() should be executed
> only if (mips_cpu.options & MIPS_CPU_FPU) == 0, shouldn't it?
> __asm__ __volatile__("cfc1\t$0,$31");
> BTW, I can not see any point in copying FCR31 to r0. What is a
> purpose of the cfc1 instruction?
On CPUs with imprecise exceptions a FPU exception might still be pending
and possibly be taken arbitrarily delayed. The cfc1 instruction serves
as an exception barrier for such exceptions. At this time TFP is the
only CPU which features imprecise exceptions.