gallium: Windows CE portability fixes.

This commit is contained in:
José Fonseca 2008-05-28 16:12:14 +09:00
parent 96a40345bb
commit 55d29a8d48
14 changed files with 192 additions and 157 deletions

View file

@ -60,10 +60,10 @@ static unsigned elt_vert( const void *elts, unsigned idx )
pt_elt_func draw_pt_elt_func( struct draw_context *draw )
{
switch (draw->pt.user.eltSize) {
case 0: return elt_vert;
case 1: return elt_ubyte;
case 2: return elt_ushort;
case 4: return elt_uint;
case 0: return &elt_vert;
case 1: return &elt_ubyte;
case 2: return &elt_ushort;
case 4: return &elt_uint;
default: return NULL;
}
}

View file

@ -147,8 +147,8 @@ static INLINE void varray_ef_quad( struct varray_frontend *varray,
unsigned i2,
unsigned i3 )
{
const unsigned omitEdge1 = DRAW_PIPE_EDGE_FLAG_0 | DRAW_PIPE_EDGE_FLAG_2;
const unsigned omitEdge2 = DRAW_PIPE_EDGE_FLAG_0 | DRAW_PIPE_EDGE_FLAG_1;
const ushort omitEdge1 = DRAW_PIPE_EDGE_FLAG_0 | DRAW_PIPE_EDGE_FLAG_2;
const ushort omitEdge2 = DRAW_PIPE_EDGE_FLAG_0 | DRAW_PIPE_EDGE_FLAG_1;
varray_triangle_flags( varray,
DRAW_PIPE_RESET_STIPPLE | omitEdge1,

View file

@ -31,9 +31,11 @@
* Brian Paul
*/
#include "pipe/p_config.h"
#include "draw_vs.h"
#if defined(__i386__) || defined(__386__)
#if defined(PIPE_ARCH_X86)
#include "pipe/p_util.h"
#include "pipe/p_shader_tokens.h"

View file

@ -47,7 +47,7 @@ static boolean rtasm_sse_enabled(void)
int rtasm_cpu_has_sse(void)
{
/* FIXME: actually detect this at run-time */
#if defined(__i386__) || defined(__386__) || defined(i386)
#if defined(PIPE_ARCH_X86)
return rtasm_sse_enabled();
#else
return 0;
@ -57,7 +57,7 @@ int rtasm_cpu_has_sse(void)
int rtasm_cpu_has_sse2(void)
{
/* FIXME: actually detect this at run-time */
#if defined(__i386__) || defined(__386__) || defined(i386)
#if defined(PIPE_ARCH_X86)
return rtasm_sse_enabled();
#else
return 0;

View file

@ -21,7 +21,9 @@
*
**************************************************************************/
#if defined(__i386__) || defined(__386__) || defined(i386)
#include "pipe/p_config.h"
#if defined(PIPE_ARCH_X86)
#include "pipe/p_compiler.h"
#include "pipe/p_debug.h"

View file

@ -24,7 +24,9 @@
#ifndef _RTASM_X86SSE_H_
#define _RTASM_X86SSE_H_
#if defined(__i386__) || defined(__386__) || defined(i386)
#include "pipe/p_config.h"
#if defined(PIPE_ARCH_X86)
/* It is up to the caller to ensure that instructions issued are
* suitable for the host cpu. There are no checks made in this module

View file

@ -8,7 +8,7 @@
union pointer_hack
{
void *pointer;
unsigned long long uint64;
uint64_t uint64;
};
void *

View file

@ -30,6 +30,7 @@
* Keith Whitwell <keith@tungstengraphics.com>
*/
#include "pipe/p_config.h"
#include "pipe/p_util.h"
#include "pipe/p_state.h"
#include "translate.h"
@ -38,7 +39,7 @@ struct translate *translate_create( const struct translate_key *key )
{
struct translate *translate = NULL;
#if defined(__i386__) || defined(__386__) || defined(i386)
#if defined(PIPE_ARCH_X86)
translate = translate_sse2_create( key );
if (translate)
return translate;

View file

@ -255,140 +255,140 @@ static fetch_func get_fetch_func( enum pipe_format format )
{
switch (format) {
case PIPE_FORMAT_R64_FLOAT:
return fetch_R64_FLOAT;
return &fetch_R64_FLOAT;
case PIPE_FORMAT_R64G64_FLOAT:
return fetch_R64G64_FLOAT;
return &fetch_R64G64_FLOAT;
case PIPE_FORMAT_R64G64B64_FLOAT:
return fetch_R64G64B64_FLOAT;
return &fetch_R64G64B64_FLOAT;
case PIPE_FORMAT_R64G64B64A64_FLOAT:
return fetch_R64G64B64A64_FLOAT;
return &fetch_R64G64B64A64_FLOAT;
case PIPE_FORMAT_R32_FLOAT:
return fetch_R32_FLOAT;
return &fetch_R32_FLOAT;
case PIPE_FORMAT_R32G32_FLOAT:
return fetch_R32G32_FLOAT;
return &fetch_R32G32_FLOAT;
case PIPE_FORMAT_R32G32B32_FLOAT:
return fetch_R32G32B32_FLOAT;
return &fetch_R32G32B32_FLOAT;
case PIPE_FORMAT_R32G32B32A32_FLOAT:
return fetch_R32G32B32A32_FLOAT;
return &fetch_R32G32B32A32_FLOAT;
case PIPE_FORMAT_R32_UNORM:
return fetch_R32_UNORM;
return &fetch_R32_UNORM;
case PIPE_FORMAT_R32G32_UNORM:
return fetch_R32G32_UNORM;
return &fetch_R32G32_UNORM;
case PIPE_FORMAT_R32G32B32_UNORM:
return fetch_R32G32B32_UNORM;
return &fetch_R32G32B32_UNORM;
case PIPE_FORMAT_R32G32B32A32_UNORM:
return fetch_R32G32B32A32_UNORM;
return &fetch_R32G32B32A32_UNORM;
case PIPE_FORMAT_R32_USCALED:
return fetch_R32_USCALED;
return &fetch_R32_USCALED;
case PIPE_FORMAT_R32G32_USCALED:
return fetch_R32G32_USCALED;
return &fetch_R32G32_USCALED;
case PIPE_FORMAT_R32G32B32_USCALED:
return fetch_R32G32B32_USCALED;
return &fetch_R32G32B32_USCALED;
case PIPE_FORMAT_R32G32B32A32_USCALED:
return fetch_R32G32B32A32_USCALED;
return &fetch_R32G32B32A32_USCALED;
case PIPE_FORMAT_R32_SNORM:
return fetch_R32_SNORM;
return &fetch_R32_SNORM;
case PIPE_FORMAT_R32G32_SNORM:
return fetch_R32G32_SNORM;
return &fetch_R32G32_SNORM;
case PIPE_FORMAT_R32G32B32_SNORM:
return fetch_R32G32B32_SNORM;
return &fetch_R32G32B32_SNORM;
case PIPE_FORMAT_R32G32B32A32_SNORM:
return fetch_R32G32B32A32_SNORM;
return &fetch_R32G32B32A32_SNORM;
case PIPE_FORMAT_R32_SSCALED:
return fetch_R32_SSCALED;
return &fetch_R32_SSCALED;
case PIPE_FORMAT_R32G32_SSCALED:
return fetch_R32G32_SSCALED;
return &fetch_R32G32_SSCALED;
case PIPE_FORMAT_R32G32B32_SSCALED:
return fetch_R32G32B32_SSCALED;
return &fetch_R32G32B32_SSCALED;
case PIPE_FORMAT_R32G32B32A32_SSCALED:
return fetch_R32G32B32A32_SSCALED;
return &fetch_R32G32B32A32_SSCALED;
case PIPE_FORMAT_R16_UNORM:
return fetch_R16_UNORM;
return &fetch_R16_UNORM;
case PIPE_FORMAT_R16G16_UNORM:
return fetch_R16G16_UNORM;
return &fetch_R16G16_UNORM;
case PIPE_FORMAT_R16G16B16_UNORM:
return fetch_R16G16B16_UNORM;
return &fetch_R16G16B16_UNORM;
case PIPE_FORMAT_R16G16B16A16_UNORM:
return fetch_R16G16B16A16_UNORM;
return &fetch_R16G16B16A16_UNORM;
case PIPE_FORMAT_R16_USCALED:
return fetch_R16_USCALED;
return &fetch_R16_USCALED;
case PIPE_FORMAT_R16G16_USCALED:
return fetch_R16G16_USCALED;
return &fetch_R16G16_USCALED;
case PIPE_FORMAT_R16G16B16_USCALED:
return fetch_R16G16B16_USCALED;
return &fetch_R16G16B16_USCALED;
case PIPE_FORMAT_R16G16B16A16_USCALED:
return fetch_R16G16B16A16_USCALED;
return &fetch_R16G16B16A16_USCALED;
case PIPE_FORMAT_R16_SNORM:
return fetch_R16_SNORM;
return &fetch_R16_SNORM;
case PIPE_FORMAT_R16G16_SNORM:
return fetch_R16G16_SNORM;
return &fetch_R16G16_SNORM;
case PIPE_FORMAT_R16G16B16_SNORM:
return fetch_R16G16B16_SNORM;
return &fetch_R16G16B16_SNORM;
case PIPE_FORMAT_R16G16B16A16_SNORM:
return fetch_R16G16B16A16_SNORM;
return &fetch_R16G16B16A16_SNORM;
case PIPE_FORMAT_R16_SSCALED:
return fetch_R16_SSCALED;
return &fetch_R16_SSCALED;
case PIPE_FORMAT_R16G16_SSCALED:
return fetch_R16G16_SSCALED;
return &fetch_R16G16_SSCALED;
case PIPE_FORMAT_R16G16B16_SSCALED:
return fetch_R16G16B16_SSCALED;
return &fetch_R16G16B16_SSCALED;
case PIPE_FORMAT_R16G16B16A16_SSCALED:
return fetch_R16G16B16A16_SSCALED;
return &fetch_R16G16B16A16_SSCALED;
case PIPE_FORMAT_R8_UNORM:
return fetch_R8_UNORM;
return &fetch_R8_UNORM;
case PIPE_FORMAT_R8G8_UNORM:
return fetch_R8G8_UNORM;
return &fetch_R8G8_UNORM;
case PIPE_FORMAT_R8G8B8_UNORM:
return fetch_R8G8B8_UNORM;
return &fetch_R8G8B8_UNORM;
case PIPE_FORMAT_R8G8B8A8_UNORM:
return fetch_R8G8B8A8_UNORM;
return &fetch_R8G8B8A8_UNORM;
case PIPE_FORMAT_R8_USCALED:
return fetch_R8_USCALED;
return &fetch_R8_USCALED;
case PIPE_FORMAT_R8G8_USCALED:
return fetch_R8G8_USCALED;
return &fetch_R8G8_USCALED;
case PIPE_FORMAT_R8G8B8_USCALED:
return fetch_R8G8B8_USCALED;
return &fetch_R8G8B8_USCALED;
case PIPE_FORMAT_R8G8B8A8_USCALED:
return fetch_R8G8B8A8_USCALED;
return &fetch_R8G8B8A8_USCALED;
case PIPE_FORMAT_R8_SNORM:
return fetch_R8_SNORM;
return &fetch_R8_SNORM;
case PIPE_FORMAT_R8G8_SNORM:
return fetch_R8G8_SNORM;
return &fetch_R8G8_SNORM;
case PIPE_FORMAT_R8G8B8_SNORM:
return fetch_R8G8B8_SNORM;
return &fetch_R8G8B8_SNORM;
case PIPE_FORMAT_R8G8B8A8_SNORM:
return fetch_R8G8B8A8_SNORM;
return &fetch_R8G8B8A8_SNORM;
case PIPE_FORMAT_R8_SSCALED:
return fetch_R8_SSCALED;
return &fetch_R8_SSCALED;
case PIPE_FORMAT_R8G8_SSCALED:
return fetch_R8G8_SSCALED;
return &fetch_R8G8_SSCALED;
case PIPE_FORMAT_R8G8B8_SSCALED:
return fetch_R8G8B8_SSCALED;
return &fetch_R8G8B8_SSCALED;
case PIPE_FORMAT_R8G8B8A8_SSCALED:
return fetch_R8G8B8A8_SSCALED;
return &fetch_R8G8B8A8_SSCALED;
case PIPE_FORMAT_A8R8G8B8_UNORM:
return fetch_A8R8G8B8_UNORM;
return &fetch_A8R8G8B8_UNORM;
case PIPE_FORMAT_B8G8R8A8_UNORM:
return fetch_B8G8R8A8_UNORM;
return &fetch_B8G8R8A8_UNORM;
default:
assert(0);
return fetch_NULL;
return &fetch_NULL;
}
}
@ -399,140 +399,140 @@ static emit_func get_emit_func( enum pipe_format format )
{
switch (format) {
case PIPE_FORMAT_R64_FLOAT:
return emit_R64_FLOAT;
return &emit_R64_FLOAT;
case PIPE_FORMAT_R64G64_FLOAT:
return emit_R64G64_FLOAT;
return &emit_R64G64_FLOAT;
case PIPE_FORMAT_R64G64B64_FLOAT:
return emit_R64G64B64_FLOAT;
return &emit_R64G64B64_FLOAT;
case PIPE_FORMAT_R64G64B64A64_FLOAT:
return emit_R64G64B64A64_FLOAT;
return &emit_R64G64B64A64_FLOAT;
case PIPE_FORMAT_R32_FLOAT:
return emit_R32_FLOAT;
return &emit_R32_FLOAT;
case PIPE_FORMAT_R32G32_FLOAT:
return emit_R32G32_FLOAT;
return &emit_R32G32_FLOAT;
case PIPE_FORMAT_R32G32B32_FLOAT:
return emit_R32G32B32_FLOAT;
return &emit_R32G32B32_FLOAT;
case PIPE_FORMAT_R32G32B32A32_FLOAT:
return emit_R32G32B32A32_FLOAT;
return &emit_R32G32B32A32_FLOAT;
case PIPE_FORMAT_R32_UNORM:
return emit_R32_UNORM;
return &emit_R32_UNORM;
case PIPE_FORMAT_R32G32_UNORM:
return emit_R32G32_UNORM;
return &emit_R32G32_UNORM;
case PIPE_FORMAT_R32G32B32_UNORM:
return emit_R32G32B32_UNORM;
return &emit_R32G32B32_UNORM;
case PIPE_FORMAT_R32G32B32A32_UNORM:
return emit_R32G32B32A32_UNORM;
return &emit_R32G32B32A32_UNORM;
case PIPE_FORMAT_R32_USCALED:
return emit_R32_USCALED;
return &emit_R32_USCALED;
case PIPE_FORMAT_R32G32_USCALED:
return emit_R32G32_USCALED;
return &emit_R32G32_USCALED;
case PIPE_FORMAT_R32G32B32_USCALED:
return emit_R32G32B32_USCALED;
return &emit_R32G32B32_USCALED;
case PIPE_FORMAT_R32G32B32A32_USCALED:
return emit_R32G32B32A32_USCALED;
return &emit_R32G32B32A32_USCALED;
case PIPE_FORMAT_R32_SNORM:
return emit_R32_SNORM;
return &emit_R32_SNORM;
case PIPE_FORMAT_R32G32_SNORM:
return emit_R32G32_SNORM;
return &emit_R32G32_SNORM;
case PIPE_FORMAT_R32G32B32_SNORM:
return emit_R32G32B32_SNORM;
return &emit_R32G32B32_SNORM;
case PIPE_FORMAT_R32G32B32A32_SNORM:
return emit_R32G32B32A32_SNORM;
return &emit_R32G32B32A32_SNORM;
case PIPE_FORMAT_R32_SSCALED:
return emit_R32_SSCALED;
return &emit_R32_SSCALED;
case PIPE_FORMAT_R32G32_SSCALED:
return emit_R32G32_SSCALED;
return &emit_R32G32_SSCALED;
case PIPE_FORMAT_R32G32B32_SSCALED:
return emit_R32G32B32_SSCALED;
return &emit_R32G32B32_SSCALED;
case PIPE_FORMAT_R32G32B32A32_SSCALED:
return emit_R32G32B32A32_SSCALED;
return &emit_R32G32B32A32_SSCALED;
case PIPE_FORMAT_R16_UNORM:
return emit_R16_UNORM;
return &emit_R16_UNORM;
case PIPE_FORMAT_R16G16_UNORM:
return emit_R16G16_UNORM;
return &emit_R16G16_UNORM;
case PIPE_FORMAT_R16G16B16_UNORM:
return emit_R16G16B16_UNORM;
return &emit_R16G16B16_UNORM;
case PIPE_FORMAT_R16G16B16A16_UNORM:
return emit_R16G16B16A16_UNORM;
return &emit_R16G16B16A16_UNORM;
case PIPE_FORMAT_R16_USCALED:
return emit_R16_USCALED;
return &emit_R16_USCALED;
case PIPE_FORMAT_R16G16_USCALED:
return emit_R16G16_USCALED;
return &emit_R16G16_USCALED;
case PIPE_FORMAT_R16G16B16_USCALED:
return emit_R16G16B16_USCALED;
return &emit_R16G16B16_USCALED;
case PIPE_FORMAT_R16G16B16A16_USCALED:
return emit_R16G16B16A16_USCALED;
return &emit_R16G16B16A16_USCALED;
case PIPE_FORMAT_R16_SNORM:
return emit_R16_SNORM;
return &emit_R16_SNORM;
case PIPE_FORMAT_R16G16_SNORM:
return emit_R16G16_SNORM;
return &emit_R16G16_SNORM;
case PIPE_FORMAT_R16G16B16_SNORM:
return emit_R16G16B16_SNORM;
return &emit_R16G16B16_SNORM;
case PIPE_FORMAT_R16G16B16A16_SNORM:
return emit_R16G16B16A16_SNORM;
return &emit_R16G16B16A16_SNORM;
case PIPE_FORMAT_R16_SSCALED:
return emit_R16_SSCALED;
return &emit_R16_SSCALED;
case PIPE_FORMAT_R16G16_SSCALED:
return emit_R16G16_SSCALED;
return &emit_R16G16_SSCALED;
case PIPE_FORMAT_R16G16B16_SSCALED:
return emit_R16G16B16_SSCALED;
return &emit_R16G16B16_SSCALED;
case PIPE_FORMAT_R16G16B16A16_SSCALED:
return emit_R16G16B16A16_SSCALED;
return &emit_R16G16B16A16_SSCALED;
case PIPE_FORMAT_R8_UNORM:
return emit_R8_UNORM;
return &emit_R8_UNORM;
case PIPE_FORMAT_R8G8_UNORM:
return emit_R8G8_UNORM;
return &emit_R8G8_UNORM;
case PIPE_FORMAT_R8G8B8_UNORM:
return emit_R8G8B8_UNORM;
return &emit_R8G8B8_UNORM;
case PIPE_FORMAT_R8G8B8A8_UNORM:
return emit_R8G8B8A8_UNORM;
return &emit_R8G8B8A8_UNORM;
case PIPE_FORMAT_R8_USCALED:
return emit_R8_USCALED;
return &emit_R8_USCALED;
case PIPE_FORMAT_R8G8_USCALED:
return emit_R8G8_USCALED;
return &emit_R8G8_USCALED;
case PIPE_FORMAT_R8G8B8_USCALED:
return emit_R8G8B8_USCALED;
return &emit_R8G8B8_USCALED;
case PIPE_FORMAT_R8G8B8A8_USCALED:
return emit_R8G8B8A8_USCALED;
return &emit_R8G8B8A8_USCALED;
case PIPE_FORMAT_R8_SNORM:
return emit_R8_SNORM;
return &emit_R8_SNORM;
case PIPE_FORMAT_R8G8_SNORM:
return emit_R8G8_SNORM;
return &emit_R8G8_SNORM;
case PIPE_FORMAT_R8G8B8_SNORM:
return emit_R8G8B8_SNORM;
return &emit_R8G8B8_SNORM;
case PIPE_FORMAT_R8G8B8A8_SNORM:
return emit_R8G8B8A8_SNORM;
return &emit_R8G8B8A8_SNORM;
case PIPE_FORMAT_R8_SSCALED:
return emit_R8_SSCALED;
return &emit_R8_SSCALED;
case PIPE_FORMAT_R8G8_SSCALED:
return emit_R8G8_SSCALED;
return &emit_R8G8_SSCALED;
case PIPE_FORMAT_R8G8B8_SSCALED:
return emit_R8G8B8_SSCALED;
return &emit_R8G8B8_SSCALED;
case PIPE_FORMAT_R8G8B8A8_SSCALED:
return emit_R8G8B8A8_SSCALED;
return &emit_R8G8B8A8_SSCALED;
case PIPE_FORMAT_A8R8G8B8_UNORM:
return emit_A8R8G8B8_UNORM;
return &emit_A8R8G8B8_UNORM;
case PIPE_FORMAT_B8G8R8A8_UNORM:
return emit_B8G8R8A8_UNORM;
return &emit_B8G8R8A8_UNORM;
default:
assert(0);
return emit_NULL;
return &emit_NULL;
}
}

View file

@ -26,6 +26,7 @@
*/
#include "pipe/p_config.h"
#include "pipe/p_compiler.h"
#include "pipe/p_util.h"
#include "util/u_simple_list.h"
@ -33,7 +34,7 @@
#include "translate.h"
#if defined(__i386__) || defined(__386__) || defined(i386)
#if defined(PIPE_ARCH_X86)
#include "rtasm/rtasm_cpu.h"
#include "rtasm/rtasm_x86sse.h"
@ -617,7 +618,7 @@ struct translate *translate_sse2_create( const struct translate_key *key )
#else
void translate_create_sse( const struct translate_key *key )
struct translate *translate_sse2_create( const struct translate_key *key )
{
return NULL;
}

View file

@ -61,7 +61,7 @@ struct util_time
#if defined(PIPE_OS_LINUX)
struct timeval tv;
#else
long long counter;
int64_t counter;
#endif
};

View file

@ -52,39 +52,55 @@
#endif /* __MSC__ */
typedef unsigned int uint;
typedef unsigned char ubyte;
typedef unsigned char boolean;
typedef unsigned short ushort;
typedef unsigned long long uint64;
#if defined(__MSC__)
typedef char int8_t;
typedef unsigned char uint8_t;
typedef short int16_t;
typedef unsigned short uint16_t;
typedef long int32_t;
typedef unsigned long uint32_t;
typedef long long int64_t;
typedef unsigned long long uint64_t;
typedef __int8 int8_t;
typedef unsigned __int8 uint8_t;
typedef __int16 int16_t;
typedef unsigned __int16 uint16_t;
typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;
#if defined(_WIN64)
typedef __int64 intptr_t;
typedef unsigned __int64 uintptr_t;
#else
typedef int intptr_t;
typedef unsigned int uintptr_t;
typedef __int32 intptr_t;
typedef unsigned __int32 uintptr_t;
#endif
#ifndef __cplusplus
#define false 0
#define true 1
#define bool _Bool
typedef int _Bool;
#define __bool_true_false_are_defined 1
#endif /* !__cplusplus */
#else
#include <stdint.h>
#include <stdbool.h>
#endif
#define TRUE 1
#define FALSE 0
typedef unsigned int uint;
typedef unsigned char ubyte;
typedef unsigned short ushort;
typedef uint64_t uint64;
#if 0
#define boolean bool
#else
typedef unsigned char boolean;
#endif
#ifndef TRUE
#define TRUE true
#endif
#ifndef FALSE
#define FALSE false
#endif
/* Function inlining */

View file

@ -35,6 +35,10 @@
* this file is auto-generated by an autoconf-like tool at some point, as some
* things cannot be determined by existing defines alone.
*
* See also:
* - http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html
* - echo | gcc -dM -E - | sort
* - http://msdn.microsoft.com/en-us/library/b0084kay.aspx
* @author José Fonseca <jrfonseca@tungstengraphics.com>
*/
@ -63,11 +67,11 @@
* Processor architecture
*/
#if defined(_X86_) || defined(__i386__) || defined(__386__) || defined(i386)
#if defined(__i386__) /* gcc */ || defined(_M_IX86) /* msvc */ || defined(_X86_) || defined(__386__) || defined(i386)
#define PIPE_ARCH_X86
#endif
#if 0 /* FIXME */
#if defined(__x86_64__) /* gcc */ || defined(_M_X64) /* msvc */ || defined(_M_AMD64) /* msvc */
#define PIPE_ARCH_X86_64
#endif

View file

@ -59,6 +59,13 @@ extern "C" {
#endif
#endif
/* MSVC bebore VC7 does not have the __FUNCTION__ macro */
#if defined(_MSC_VER) && _MSC_VER < 1300
#define __FUNCTION__ "???"
#endif
void _debug_vprintf(const char *format, va_list ap);
@ -127,8 +134,8 @@ void _debug_break(void);
#ifdef DEBUG
#if (defined(__i386__) || defined(__386__)) && defined(__GNUC__)
#define debug_break() __asm("int3")
#elif (defined(__i386__) || defined(__386__)) && defined(__MSC__)
#define debug_break() _asm {int 3}
#elif defined(_M_IX86) && defined(_MSC_VER)
#define debug_break() do { _asm {int 3} } while(0)
#else
#define debug_break() _debug_break()
#endif