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

Reply via email to