[FFmpeg-devel] [PATCH] AltiVec detection support for OpenBSD

Brad brad
Mon Sep 22 01:13:52 CEST 2008


On Mon, Sep 22, 2008 at 12:50:39AM +0200, Diego Biurrun wrote:
> On Sat, Sep 20, 2008 at 11:49:58PM -0400, Brad wrote:
> > The following diff adds support for detecting the presence of
> > AltiVec for OpenBSD.
> > 
> > 
> > --- libavcodec/ppc/check_altivec.c.orig	Sat Sep 20 12:27:25 2008
> > +++ libavcodec/ppc/check_altivec.c	Sat Sep 20 22:52:16 2008
> > @@ -25,6 +25,10 @@
> >  #ifdef __APPLE__
> >  #undef _POSIX_C_SOURCE
> >  #include <sys/sysctl.h>
> > +#elif defined(__OpenBSD__)
> 
> #elif __OpenBSD__

#elif defined() is used further down in the code already.

> > +#include <sys/param.h>
> > +#include <sys/sysctl.h>
> > +#include <machine/cpu.h>
> >  #elif __AMIGAOS4__
> >  #include <exec/exec.h>
> >  #include <interfaces/exec.h>
> > @@ -45,8 +49,12 @@ int has_altivec(void)
> >      IExec->GetCPUInfoTags(GCIT_VectorUnit, &result, TAG_DONE);
> >      if (result == VECTORTYPE_ALTIVEC) return 1;
> >      return 0;
> > -#elif __APPLE__
> > +#elif defined(__APPLE__) || defined(__OpenBSD__)
> > +#ifdef __OpenBSD__
> > +    int sels[2] = {CTL_MACHDEP, CPU_ALTIVEC};
> > +#else
> >      int sels[2] = {CTL_HW, HW_VECTORUNIT};
> > +#endif
> 
> Just add another #elif block, not a complete #ifdef #endif.


--- libavcodec/ppc/check_altivec.c.orig	Sat Sep 20 12:27:25 2008
+++ libavcodec/ppc/check_altivec.c	Sun Sep 21 19:08:49 2008
@@ -25,6 +25,10 @@
 #ifdef __APPLE__
 #undef _POSIX_C_SOURCE
 #include <sys/sysctl.h>
+#elif __OpenBSD__
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <machine/cpu.h>
 #elif __AMIGAOS4__
 #include <exec/exec.h>
 #include <interfaces/exec.h>
@@ -47,6 +51,16 @@ int has_altivec(void)
     return 0;
 #elif __APPLE__
     int sels[2] = {CTL_HW, HW_VECTORUNIT};
+    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 != 0;
+    return 0;
+#elif __OpenBSD__
+    int sels[2] = {CTL_MACHDEP, CPU_ALTIVEC};
     int has_vu = 0;
     size_t len = sizeof(has_vu);
     int err;

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.





More information about the ffmpeg-devel mailing list