206 typedef int (*int_fnP_cond_tP)(cond_t *cv); 207 }; 208 #endif // SOLARIS 209 210 //---------------------------------------------------------------------------------------------------- 211 // Debugging 212 213 #define DEBUG_EXCEPTION ::abort(); 214 215 #ifdef ARM32 216 #ifdef SOLARIS 217 #define BREAKPOINT __asm__ volatile (".long 0xe1200070") 218 #else 219 #define BREAKPOINT __asm__ volatile (".long 0xe7f001f0") 220 #endif 221 #else 222 extern "C" void breakpoint(); 223 #define BREAKPOINT ::breakpoint() 224 #endif 225 226 // checking for nanness 227 #ifdef SOLARIS 228 #ifdef SPARC 229 inline int g_isnan(float f) { return isnanf(f); } 230 #else 231 // isnanf() broken on Intel Solaris use isnand() 232 inline int g_isnan(float f) { return isnand(f); } 233 #endif 234 inline int g_isnan(double f) { return isnand(f); } 235 #elif defined(__APPLE__) 236 inline int g_isnan(double f) { return isnan(f); } 237 #elif defined(LINUX) || defined(_ALLBSD_SOURCE) 238 inline int g_isnan(float f) { return isnanf(f); } 239 inline int g_isnan(double f) { return isnan(f); } 240 #else 241 #error "missing platform-specific definition here" 242 #endif 243 244 // GCC 4.3 does not allow 0.0/0.0 to produce a NAN value 245 #if (__GNUC__ == 4) && (__GNUC_MINOR__ > 2) | 206 typedef int (*int_fnP_cond_tP)(cond_t *cv); 207 }; 208 #endif // SOLARIS 209 210 //---------------------------------------------------------------------------------------------------- 211 // Debugging 212 213 #define DEBUG_EXCEPTION ::abort(); 214 215 #ifdef ARM32 216 #ifdef SOLARIS 217 #define BREAKPOINT __asm__ volatile (".long 0xe1200070") 218 #else 219 #define BREAKPOINT __asm__ volatile (".long 0xe7f001f0") 220 #endif 221 #else 222 extern "C" void breakpoint(); 223 #define BREAKPOINT ::breakpoint() 224 #endif 225 226 #define NORETURN_ATTRIBUTE(function) function __attribute__ ((noreturn)) 227 228 // checking for nanness 229 #ifdef SOLARIS 230 #ifdef SPARC 231 inline int g_isnan(float f) { return isnanf(f); } 232 #else 233 // isnanf() broken on Intel Solaris use isnand() 234 inline int g_isnan(float f) { return isnand(f); } 235 #endif 236 inline int g_isnan(double f) { return isnand(f); } 237 #elif defined(__APPLE__) 238 inline int g_isnan(double f) { return isnan(f); } 239 #elif defined(LINUX) || defined(_ALLBSD_SOURCE) 240 inline int g_isnan(float f) { return isnanf(f); } 241 inline int g_isnan(double f) { return isnan(f); } 242 #else 243 #error "missing platform-specific definition here" 244 #endif 245 246 // GCC 4.3 does not allow 0.0/0.0 to produce a NAN value 247 #if (__GNUC__ == 4) && (__GNUC_MINOR__ > 2) |