diff options
Diffstat (limited to 'libavcodec/ppc/check_altivec.c')
-rw-r--r-- | libavcodec/ppc/check_altivec.c | 12 |
1 files changed, 12 insertions, 0 deletions
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). |