diff --git a/extern/poshlib/posh.h b/extern/poshlib/posh.h index 9586402..b68dcae 100644 --- a/extern/poshlib/posh.h +++ b/extern/poshlib/posh.h @@ -306,6 +306,11 @@ LLVM: # define POSH_OS_STRING "FreeBSD" #endif +#if defined __OpenBSD__ +# define POSH_OS_OPENBSD 1 +# define POSH_OS_STRING "OpenBSD" +#endif + #if defined __CYGWIN32__ # define POSH_OS_CYGWIN32 1 # define POSH_OS_STRING "Cygwin" diff --git a/src/nvcore/Debug.cpp b/src/nvcore/Debug.cpp index 2dc22dc..25c93a8 100644 --- a/src/nvcore/Debug.cpp +++ b/src/nvcore/Debug.cpp @@ -6,6 +6,8 @@ #include "StdStream.h" // fileOpen +#include + // Extern #if NV_OS_WIN32 //&& NV_CC_MSVC # define WIN32_LEAN_AND_MEAN @@ -38,7 +40,7 @@ # include #endif -#if NV_OS_LINUX || NV_OS_DARWIN || NV_OS_FREEBSD +#if NV_OS_UNIX # include // getpid #endif @@ -49,10 +51,13 @@ # endif #endif -#if NV_OS_DARWIN || NV_OS_FREEBSD +#if NV_OS_DARWIN || NV_OS_FREEBSD || NV_OS_OPENBSD # include +# include # include // sysctl -# include +# if !defined(NV_OS_OPENBSD) +# include +# endif # if defined(HAVE_EXECINFO_H) // only after OSX 10.5 # include // backtrace # if NV_CC_GNUC // defined(HAVE_CXXABI_H) @@ -595,6 +600,16 @@ namespace # else # error "Unknown CPU" # endif +#elif NV_OS_OPENBSD +# if NV_CPU_X86_64 + ucontext_t * ucp = (ucontext_t *)secret; + return (void *)ucp->sc_rip; +# elif NV_CPU_X86 + ucontext_t * ucp = (ucontext_t *)secret; + return (void *)ucp->sc_eip; +# else +# error "Unknown CPU" +# endif #else # if NV_CPU_X86_64 // #define REG_RIP REG_INDEX(rip) // seems to be 16 diff --git a/src/nvcore/nvcore.h b/src/nvcore/nvcore.h index 22b9631..1681550 100644 --- a/src/nvcore/nvcore.h +++ b/src/nvcore/nvcore.h @@ -40,6 +40,9 @@ #elif defined POSH_OS_FREEBSD # define NV_OS_FREEBSD 1 # define NV_OS_UNIX 1 +#elif defined POSH_OS_OPENBSD +# define NV_OS_OPENBSD 1 +# define NV_OS_UNIX 1 #elif defined POSH_OS_CYGWIN32 # define NV_OS_CYGWIN 1 #elif defined POSH_OS_MINGW @@ -242,7 +245,7 @@ NV_COMPILER_CHECK(sizeof(uint32) == 4); #elif NV_CC_GNUC # if NV_OS_LINUX # include "DefsGnucLinux.h" -# elif NV_OS_DARWIN || NV_OS_FREEBSD +# elif NV_OS_DARWIN || NV_OS_FREEBSD || NV_OS_OPENBSD # include "DefsGnucDarwin.h" # elif NV_OS_MINGW # include "DefsGnucWin32.h" diff --git a/src/nvmath/nvmath.h b/src/nvmath/nvmath.h index 7416662..91d9c43 100644 --- a/src/nvmath/nvmath.h +++ b/src/nvmath/nvmath.h @@ -132,7 +132,7 @@ namespace nv { #if NV_OS_WIN32 || NV_OS_XBOX return _finite(f) != 0; -#elif NV_OS_DARWIN || NV_OS_FREEBSD +#elif NV_OS_DARWIN || NV_OS_FREEBSD || NV_OS_OPENBSD return isfinite(f); #elif NV_OS_LINUX return finitef(f); @@ -147,7 +147,7 @@ namespace nv { #if NV_OS_WIN32 || NV_OS_XBOX return _isnan(f) != 0; -#elif NV_OS_DARWIN || NV_OS_FREEBSD +#elif NV_OS_DARWIN || NV_OS_FREEBSD || NV_OS_OPENBSD return isnan(f); #elif NV_OS_LINUX return isnanf(f); diff --git a/src/nvthread/nvthread.cpp b/src/nvthread/nvthread.cpp index 8e4adbc..b931bfa 100644 --- a/src/nvthread/nvthread.cpp +++ b/src/nvthread/nvthread.cpp @@ -5,23 +5,11 @@ #include "Thread.h" #if NV_OS_WIN32 -#include "Win32.h" +# include "Win32.h" #elif NV_OS_UNIX -#include -#include -#elif NV_OS_DARWIN -#import -#import -#import -#import - -//#include - -#include -#include -#include -#include -#include +# include +# include +# include #endif using namespace nv; @@ -39,14 +27,19 @@ uint nv::hardwareThreadCount() { return 3; // or 6? #elif NV_OS_LINUX // Linux, Solaris, & AIX return sysconf(_SC_NPROCESSORS_ONLN); -#elif NV_OS_DARWIN || NV_OS_FREEBSD +#elif NV_OS_DARWIN || NV_OS_FREEBSD || NV_OS_OPENBSD int numCPU; int mib[4]; size_t len = sizeof(numCPU); // set the mib for hw.ncpu mib[0] = CTL_HW; - mib[1] = HW_AVAILCPU; // alternatively, try HW_NCPU; + +#if NV_OS_OPENBSD + mib[1] = HW_NCPU; +#else + mib[1] = HW_AVAILCPU; +#endif // get the number of CPUs from the system sysctl(mib, 2, &numCPU, &len, NULL, 0);