diff options
author | Måns Rullgård <mans@mansr.com> | 2010-09-09 18:51:45 +0000 |
---|---|---|
committer | Måns Rullgård <mans@mansr.com> | 2010-09-09 18:51:45 +0000 |
commit | 9275438a19c02264762d550a077bbf83acd63f3f (patch) | |
tree | 6fe28bcf94fa6d97578579f251a0f8e9a193be97 /libavutil/ppc/cpu.h | |
parent | d222e9f9daeabe499653bc79c9a25b774941e630 (diff) | |
download | ffmpeg-9275438a19c02264762d550a077bbf83acd63f3f.tar.gz |
Clean up av_get_cpu_flag()
Instead of defining functions in per-arch header files included
by the main cpu.c, define them normally and call them from the
generic one.
Originally committed as revision 25084 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavutil/ppc/cpu.h')
-rw-r--r-- | libavutil/ppc/cpu.h | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/libavutil/ppc/cpu.h b/libavutil/ppc/cpu.h deleted file mode 100644 index 684361c5ff..0000000000 --- a/libavutil/ppc/cpu.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_PPC_CPU_H -#define AVUTIL_PPC_CPU_H - -#ifdef __APPLE__ -#undef _POSIX_C_SOURCE -#include <sys/sysctl.h> -#elif defined(__OpenBSD__) -#include <sys/param.h> -#include <sys/sysctl.h> -#include <machine/cpu.h> -#elif defined(__AMIGAOS4__) -#include <exec/exec.h> -#include <interfaces/exec.h> -#include <proto/exec.h> -#endif /* __APPLE__ */ - -#include "config.h" - -/** - * This function MAY rely on signal() or fork() in order to make sure AltiVec - * is present. - */ -int av_get_cpu_flags(void) -{ -#if HAVE_ALTIVEC -#ifdef __AMIGAOS4__ - ULONG result = 0; - extern struct ExecIFace *IExec; - - IExec->GetCPUInfoTags(GCIT_VectorUnit, &result, TAG_DONE); - if (result == VECTORTYPE_ALTIVEC) - return AV_CPU_FLAG_ALTIVEC; - return 0; -#elif defined(__APPLE__) || defined(__OpenBSD__) -#ifdef __OpenBSD__ - int sels[2] = {CTL_MACHDEP, CPU_ALTIVEC}; -#else - int sels[2] = {CTL_HW, HW_VECTORUNIT}; -#endif - int has_vu = 0; - size_t len = sizeof(has_vu); - int err; - - err = sysctl(sels, 2, &has_vu, &len, NULL, 0); - - if (err == 0) - return has_vu ? AV_CPU_FLAG_ALTIVEC : 0; - return 0; -#elif CONFIG_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 AV_CPU_FLAG_ALTIVEC; - 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). - return AV_CPU_FLAG_ALTIVEC; -#endif /* __AMIGAOS4__ */ -#endif /* HAVE_ALTIVEC */ - return 0; -} - -#endif /* AVUTIL_PPC_CPU_H */ |