From b8659d94b76c9b90c0aff3c5c01bfd2be6324e93 Mon Sep 17 00:00:00 2001 From: Reimar Döffinger Date: Sat, 19 Jan 2008 19:27:39 +0000 Subject: Add mfspr-based AltiVec detection code. Currently not enabled in FFmpeg, because it crashes if the OS does not emulate mfspr. Originally committed as revision 11569 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/ppc/check_altivec.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'libavcodec/ppc/check_altivec.c') diff --git a/libavcodec/ppc/check_altivec.c b/libavcodec/ppc/check_altivec.c index b3778cab31..cf55b9a1d5 100644 --- a/libavcodec/ppc/check_altivec.c +++ b/libavcodec/ppc/check_altivec.c @@ -54,6 +54,18 @@ int has_altivec(void) if (err == 0) return (has_vu != 0); return 0; +#elif defined(RUNTIME_CPUDETECT) + int proc_ver; + // support of mfspr PVR emulation added in Linux 2.6.17 + asm volatile("mfspr %0, 287" : "=r" (proc_ver)); + proc_ver >>= 16; + if (proc_ver & 0x8000 || + proc_ver == 0x000c || + proc_ver == 0x0039 || proc_ver == 0x003c || + proc_ver == 0x0044 || proc_ver == 0x0045 || + proc_ver == 0x0070) + return 1; + return 0; #else // since we were compiled for altivec, just assume we have it // until someone comes up with a proper way (not involving signal hacks). -- cgit v1.2.3