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