linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* Strange FPU/threads problem
@ 2001-11-20 18:16 David Given
  2001-11-23 17:08 ` David Given
  0 siblings, 1 reply; 3+ messages in thread
From: David Given @ 2001-11-20 18:16 UTC (permalink / raw)
  To: linuxppc-dev


Context: PowerMac 8200/120, 601 processor, stock kernel 2.4.12, libc 2.2.4,
gcc 2.95.4, Debian woodyish.

I'm finding something really weird is going on with my program. It works like
this:

I can compile the program either to use threads, or not to use threads. If I
compile it so it *doesn't* use threads, it works fine.

However, if I compile it so that it *does* use threads, it bails with a
SIGFPE the first time in encounters a floating point instruction. And I don't
know why.

What's happening is that my code is shuffling long longs around, and gcc is
using the FPU as a fast way of doing this. The exact code is:

    C81F0008 0FE24468 lfd f0, 8 (r31)
    D81F0028 0FE2446C stfd f0, 40 (r31)

I've determined that the code is being executed in the primary process; that
is, it hasn't spawned any threads yet. The memory that's being pointed to is
valid.

The FP bit in the MSR is unset, so the processor thinks I'm not using the
FPU. But this should be perfectly normal, as my understanding of the kernel
suggests that it uses lazy FP setting. The kernel should hook the trap and
silently enable the FPU for me. But it's not.

I suspect that this may be a kernel bug. Any ideas?

--
David Given
dg@tao-group.com

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2001-11-23 19:24 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-11-20 18:16 Strange FPU/threads problem David Given
2001-11-23 17:08 ` David Given
2001-11-23 19:24   ` Gabriel Paubert

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).