Am Dienstag, 10. Dezember 2002 12:03 schrieb Charl P. Botha:
> On Tue, 2002-12-10 at 11:59, Felix K�hling wrote:
> > On Tue, 10 Dec 2002 10:37:07 +0000
> >
> > Keith Whitwell <[EMAIL PROTECTED]> wrote:
> > > Charl P. Botha wrote:
> > > > Program received signal SIGFPE, Arithmetic exception.
> > > > 0x4246fe4a in _mesa_sse_transform_points3_general ()
> > > > from /usr/X11R6/lib/modules/dri/radeon_dri.so
> > > > (gdb) bt
> > > > #0 0x4246fe4a in _mesa_sse_transform_points3_general ()
> > > > from /usr/X11R6/lib/modules/dri/radeon_dri.so
> > >
> > > It looks like a new/different problem to the one fixed earlier. It's
> > > tempting to say it's a bug in the assembly, but otoh that code has been
> > > pretty widely used without change over the last couple of years.
> > >
> > > It may be a result of the new gcc's ability to put sse, mmx into normal
> > > code - this has bitten us a couple of times.
> >
> > As far as I can tell it is a bug in gcc if you get mmx instructions in
> > normal output. It would break the kernel. As a test I once compiled my
> > kernel with gcc-3.2 -S and grepped for "%mm". All I found was some
> > inline assembly. A workaround for the gcc-3.2 (fixed in 3.2.1) problems
> > is to compile with -mno-mmx -mno-3dnow.
> >
> > The use of SSE for normal floating point operations is another thing,
> > though. But according to gcc-3.2 docs -mfpmath=387 should be the
> > default.
>
> This was built with gcc 2.95 (and there's no trace of a newer gcc on the
> system) so these 3.2 problems should not be an issue. I'll try and
> disassemble the offending instructions tonight as per Keith's advice.
It seems that this isn't a gcc or asm thing.
I use the "old" gcc-2.95.3, too and only some cases are fixed after the "one
liner".
Petr Sebor did some debuging and he didn't found anything in the asm.
But he thinks that the SSE routine is called with wrong data.
"cubemap" is fixed but "stex3d" and "texdown" with pressing "b" sigfault.
MESA_NO_SSE cure it.
System is dual Athlon MP 1900+, r200.
Reading symbols from /usr/X11R6/lib/modules/dri/r200_dri.so...done.
Loaded symbols for /usr/X11R6/lib/modules/dri/r200_dri.so
#0 0x40610cc9 in _mesa_sse_transform_points3_3d ()
from /usr/X11R6/lib/modules/dri/r200_dri.so
(gdb) bt
#0 0x40610cc9 in _mesa_sse_transform_points3_3d ()
from /usr/X11R6/lib/modules/dri/r200_dri.so
#1 0x0828d8b0 in ?? ()
#2 0x405242b0 in default_calloc () from
/usr/X11R6/lib/modules/dri/r200_dri.so
#3 0xfffad7e8 in ?? ()
(gdb) info registers
eax 0x10 16
ecx 0x828e6c0 136898240
edx 0x8050660 134547040
ebx 0x6 6
esp 0xbfffeaec 0xbfffeaec
ebp 0x8056be8 0x8056be8
esi 0x823b148 136556872
edi 0x828d940 136894784
eip 0x40610cc9 0x40610cc9
eflags 0x10206 66054
cs 0x23 35
ss 0x2b 43
ds 0x2b 43
es 0x2b 43
fs 0x2b 43
gs 0x2b 43
fctrl 0x7f 127
fstat 0x0 0
ftag 0x0 0
fiseg 0x0 0
fioff 0x0 0
foseg 0x20 32
fooff 0x0 0
fop 0x0 0
xmm0 0xffffffffffffffffffffffffffffffff
xmm1 0xffffffffffffffffffffffffffffffff
xmm2 0xffffffffffffffffffffffffffffffff
xmm3 0xffffffffffffffffffffffffffffffff
xmm4 0xffffffffffffffffffffffffffffffff
xmm5 0xffffffffffffffffffffffffffffffff
xmm6 0xffffffffffffffffffffffffffffffff
xmm7 0xffffffffffffffffffffffffffffffff
mxcsr 0x1f80 8064
(gdb) disassemble
Dump of assembler code for function _mesa_sse_transform_points3_3d:
0x40610c64 <_mesa_sse_transform_points3_3d>: push %esi
0x40610c65 <_mesa_sse_transform_points3_3d+1>: push %edi
0x40610c66 <_mesa_sse_transform_points3_3d+2>: mov 0x14(%esp,1),%esi
0x40610c6a <_mesa_sse_transform_points3_3d+6>: mov 0xc(%esp,1),%edi
0x40610c6e <_mesa_sse_transform_points3_3d+10>: mov 0x10(%esp,1),%edx
0x40610c72 <_mesa_sse_transform_points3_3d+14>: mov 0x8(%esi),%ecx
0x40610c75 <_mesa_sse_transform_points3_3d+17>: test %ecx,%ecx
0x40610c77 <_mesa_sse_transform_points3_3d+19>:
je 0x40610d02 <_mesa_sse_transform_points3_3d+158>
0x40610c7d <_mesa_sse_transform_points3_3d+25>: mov 0xc(%esi),%eax
0x40610c80 <_mesa_sse_transform_points3_3d+28>: orl $0x7,0x14(%edi)
0x40610c84 <_mesa_sse_transform_points3_3d+32>: mov %ecx,0x8(%edi)
0x40610c87 <_mesa_sse_transform_points3_3d+35>: movl $0x3,0x10(%edi)
0x40610c8e <_mesa_sse_transform_points3_3d+42>: shl $0x4,%ecx
0x40610c91 <_mesa_sse_transform_points3_3d+45>: mov 0x4(%esi),%esi
0x40610c94 <_mesa_sse_transform_points3_3d+48>: mov 0x4(%edi),%edi
0x40610c97 <_mesa_sse_transform_points3_3d+51>: add %edi,%ecx
0x40610c99 <_mesa_sse_transform_points3_3d+53>: lea 0x0(%esi,1),%esi
0x40610ca0 <_mesa_sse_transform_points3_3d+60>: movaps 0x0(%edx),%xmm0
0x40610ca4 <_mesa_sse_transform_points3_3d+64>: movaps 0x10(%edx),%xmm1
0x40610ca8 <_mesa_sse_transform_points3_3d+68>: movaps 0x20(%edx),%xmm2
0x40610cac <_mesa_sse_transform_points3_3d+72>: movaps 0x30(%edx),%xmm3
0x40610cb0 <_mesa_sse_transform_points3_3d+76>: nop
0x40610cb1 <_mesa_sse_transform_points3_3d+77>: nop
0x40610cb2 <_mesa_sse_transform_points3_3d+78>: nop
0x40610cb3 <_mesa_sse_transform_points3_3d+79>: nop
0x40610cb4 <_mesa_sse_transform_points3_3d+80>: nop
0x40610cb5 <_mesa_sse_transform_points3_3d+81>: nop
0x40610cb6 <_mesa_sse_transform_points3_3d+82>: nop
0x40610cb7 <_mesa_sse_transform_points3_3d+83>: nop
0x40610cb8 <_mesa_sse_transform_points3_3d+84>: nop
0x40610cb9 <_mesa_sse_transform_points3_3d+85>: nop
0x40610cba <_mesa_sse_transform_points3_3d+86>: nop
0x40610cbb <_mesa_sse_transform_points3_3d+87>: nop
0x40610cbc <_mesa_sse_transform_points3_3d+88>: nop
0x40610cbd <_mesa_sse_transform_points3_3d+89>: nop
0x40610cbe <_mesa_sse_transform_points3_3d+90>: nop
0x40610cbf <_mesa_sse_transform_points3_3d+91>: nop
0x40610cc0 <_mesa_sse_transform_points3_3d+92>: movss 0x0(%esi),%xmm4
0x40610cc5 <_mesa_sse_transform_points3_3d+97>: shufps $0x0,%xmm4,%xmm4
0x40610cc9 <_mesa_sse_transform_points3_3d+101>: mulps %xmm0,%xmm4
0x40610ccc <_mesa_sse_transform_points3_3d+104>: movss 0x4(%esi),%xmm5
0x40610cd1 <_mesa_sse_transform_points3_3d+109>: shufps
$0x0,%xmm5,%xmm5
0x40610cd5 <_mesa_sse_transform_points3_3d+113>: mulps %xmm1,%xmm5
0x40610cd8 <_mesa_sse_transform_points3_3d+116>: movss 0x8(%esi),%xmm6
0x40610cdd <_mesa_sse_transform_points3_3d+121>: shufps
$0x0,%xmm6,%xmm6
0x40610ce1 <_mesa_sse_transform_points3_3d+125>: mulps %xmm2,%xmm6
0x40610ce4 <_mesa_sse_transform_points3_3d+128>: addps %xmm5,%xmm4
0x40610ce7 <_mesa_sse_transform_points3_3d+131>: addps %xmm6,%xmm4
0x40610cea <_mesa_sse_transform_points3_3d+134>: addps %xmm3,%xmm4
0x40610ced <_mesa_sse_transform_points3_3d+137>: movlps %xmm4,0x0(%edi)
0x40610cf1 <_mesa_sse_transform_points3_3d+141>: unpckhps %xmm4,%xmm4
0x40610cf4 <_mesa_sse_transform_points3_3d+144>: movss %xmm4,0x8(%edi)
0x40610cf9 <_mesa_sse_transform_points3_3d+149>: add $0x10,%edi
0x40610cfc <_mesa_sse_transform_points3_3d+152>: add %eax,%esi
0x40610cfe <_mesa_sse_transform_points3_3d+154>: cmp %ecx,%edi
0x40610d00 <_mesa_sse_transform_points3_3d+156>:
jne 0x40610cc0 <_mesa_sse_transform_points3_3d+92>
0x40610d02 <_mesa_sse_transform_points3_3d+158>: pop %edi
0x40610d03 <_mesa_sse_transform_points3_3d+159>: pop %esi
0x40610d04 <_mesa_sse_transform_points3_3d+160>: ret
0x40610d05 <_mesa_sse_transform_points3_3d+161>: nop
0x40610d06 <_mesa_sse_transform_points3_3d+162>: nop
0x40610d07 <_mesa_sse_transform_points3_3d+163>: nop
0x40610d08 <_mesa_sse_transform_points3_3d+164>: nop
0x40610d09 <_mesa_sse_transform_points3_3d+165>: nop
0x40610d0a <_mesa_sse_transform_points3_3d+166>: nop
0x40610d0b <_mesa_sse_transform_points3_3d+167>: nop
0x40610d0c <_mesa_sse_transform_points3_3d+168>: nop
0x40610d0d <_mesa_sse_transform_points3_3d+169>: nop
0x40610d0e <_mesa_sse_transform_points3_3d+170>: nop
0x40610d0f <_mesa_sse_transform_points3_3d+171>: nop
0x40610d10 <_mesa_sse_transform_points3_3d+172>: nop
0x40610d11 <_mesa_sse_transform_points3_3d+173>: nop
0x40610d12 <_mesa_sse_transform_points3_3d+174>: nop
0x40610d13 <_mesa_sse_transform_points3_3d+175>: nop
0x40610d14 <_mesa_sse_transform_points3_3d+176>: nop
0x40610d15 <_mesa_sse_transform_points3_3d+177>: nop
0x40610d16 <_mesa_sse_transform_points3_3d+178>: nop
0x40610d17 <_mesa_sse_transform_points3_3d+179>: nop
0x40610d18 <_mesa_sse_transform_points3_3d+180>: nop
0x40610d19 <_mesa_sse_transform_points3_3d+181>: nop
0x40610d1a <_mesa_sse_transform_points3_3d+182>: nop
0x40610d1b <_mesa_sse_transform_points3_3d+183>: nop
0x40610d1c <_mesa_sse_transform_points3_3d+184>: nop
0x40610d1d <_mesa_sse_transform_points3_3d+185>: nop
0x40610d1e <_mesa_sse_transform_points3_3d+186>: nop
0x40610d1f <_mesa_sse_transform_points3_3d+187>: nop
End of assembler dump.
Regards,
Dieter
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel