[MPlayer-dev-eng] new Altivec patches and G3

Alan Curry pacman at TheWorld.com
Sat Feb 18 22:26:02 CET 2006


I wrote:
>
>Andrea =?ISO-8859-1?q?Palmat=E8?= writes the following:
>>
>>Hello all,
>>
>>The new Altivec patches doesn't take care of G3 processors. a test on
>>SWS_CPU_CAPS_ALTIVEC should be done. the new version indeed when run a g3
>>processor try to use altivec and then crash
>
>I don't see right away which change could have caused that to happen, but
>I'll compile a no-altivec kernel and see if I can get it to crash.

Well, that was interesting. By running a no-altivec kernel, I didn't find the
mplayer bug but I apparently tripped over a Linux kernel bug. It doesn't send
SIGILL like it should when a process triggers an altivec-disabled exception;
instead it does random things like Oopsing, or logging a message indicating
incorrectly that a vector instruction was encountered in kernel mode.

All of that probably doesn't apply when the process is actually a G3, because
the exception generated would be different.

Another problem with the runtime CPU detection is that gcc can put altivec
instructions in the function prologue (register saving) and so the SIGILL
comes before the handler is installed.

However... after I hardwired the cpu detection code to set hasAltiVec=0
without actually attempting the test, everything worked perfectly, which
seems to indicate that the SWS_CPU_CAPS_ALTIVEC flag is being tested
everywhere it should be.

So I must ask Andrea, or anyone else with a G3, for more information: where
does it crash? before printing "AltiVec not found"? After initializing the
video output device? And if you compile without runtime CPU detection, does
it work then?




More information about the MPlayer-dev-eng mailing list