#include <sys/sysctl.h>
#endif
+#if defined(__OpenBSD__)
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <machine/cpu.h>
+#endif
+
#if defined(__SunOS)
#include <unistd.h>
#include <sys/types.h>
#elif defined( __powerpc__ ) || defined( __ppc__ ) || defined( __powerpc64__ ) \
|| defined( __ppc64__ )
-# if defined(__APPLE__)
+# if defined(__APPLE__) || defined(__OpenBSD__)
+# if defined(__OpenBSD__)
+ int selectors[2] = { CTL_MACHDEP, CPU_ALTIVEC };
+# else
int selectors[2] = { CTL_HW, HW_VECTORUNIT };
+# endif
int i_has_altivec = 0;
size_t i_length = sizeof( i_has_altivec );
int i_error = sysctl( selectors, 2, &i_has_altivec, &i_length, NULL, 0);
if (sysctlbyname("hw.ncpu", &count, &size, NULL, 0))
return 1; /* Failure */
return count;
+#elif defined(__OpenBSD__)
+ int selectors[2] = { CTL_HW, HW_NCPU };
+ int count;
+ size_t size = sizeof(count) ;
+ if (sysctl(selectors, 2, &count, &size, NULL, 0))
+ return 1; /* Failure */
+ return count;
#elif defined(__SunOS)
unsigned count = 0;
int type;