]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Add mfspr-based AltiVec detection code.
authorreimar <reimar@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 19 Jan 2008 19:27:39 +0000 (19:27 +0000)
committerreimar <reimar@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 19 Jan 2008 19:27:39 +0000 (19:27 +0000)
Currently not enabled in FFmpeg, because it crashes if the OS does not
emulate mfspr.

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@11569 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/ppc/check_altivec.c

index b3778cab31cfe452ec82589afc38016cc4922b70..cf55b9a1d51847bef5c989a2dc966e9d78f4f838 100644 (file)
@@ -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).