Blame include/psxtypes/compiler/__nt_compiler_gcc.h

2184c4
#ifndef _PSXTYPES_NT_COMPILER_GCC_H_
2184c4
#define _PSXTYPES_NT_COMPILER_GCC_H_
2184c4
2184c4
2184c4
/* compiler identification */
2184c4
#define __COMPILER__			__GCC__
2184c4
#define __COMPILER_DEPENDENT_SUFFIX__	__gcc
2184c4
2184c4
2184c4
/* NTVER: the bare minimum */
2184c4
#ifndef NTVER
2184c4
	#define NTVER 0x0500
2184c4
#elif (NTVER < 0x0500)
2184c4
	#error __^@^__: NTVER: minimum supported NT version is 0x0500.
2184c4
#endif
2184c4
2184c4
2184c4
/* x86 processor model */
2184c4
#if defined(__i986__)
2184c4
	#define __X86_MODEL 	986
2184c4
#elif defined(__i886__)
2184c4
	#define __X86_MODEL 	886
2184c4
#elif defined(__i786__)
2184c4
	#define __X86_MODEL 	786
2184c4
#elif defined(__i686__)
2184c4
	#define __X86_MODEL 	686
2184c4
#elif defined(__i586__)
2184c4
	#define __X86_MODEL 	586
2184c4
#elif defined(__i486__)
2184c4
	#define __X86_MODEL 	486
2184c4
#elif defined(__i386__)
2184c4
	#define __X86_MODEL 	386
2184c4
#endif
2184c4
2184c4
2184c4
/* x86_64 processor model */
2184c4
#if defined(__amd64) && (__amd64)
2184c4
	#define __X86_64_MODEL 	__amd64
2184c4
#endif
2184c4
2184c4
2184c4
/* va_list */
2184c4
#define __CUSTOM_OR_BUILTIN_va_list__  __builtin_va_list
2184c4
2184c4
2184c4
/* compiler keywords */
2184c4
#define __in
2184c4
#define __out
2184c4
#define __in_opt
2184c4
#define __out_opt
2184c4
#define __in_out
2184c4
#define __in_out_opt
2184c4
#define __reserved
2184c4
#define __optional
2184c4
#define __simplified
2184c4
#define __caller_allocated
2184c4
#define __caller_initialized
2184c4
#define __null_placeholder		(0x0)
2184c4
2184c4
2184c4
/* compiler attributes */
2184c4
#define __attr_aligned__(x)		__attribute__((__aligned__(x)))
2184c4
#define __attr_ptr_size_aligned__	__attr_aligned__(__SIZEOF_POINTER__)
2184c4
#define __attr_packed__			__attribute__((__packed__))
2184c4
#define __attr_export__			__attribute__((dllexport))
2184c4
#define __attr_import__			__attribute__((dllimport))
2184c4
#define __attr_naked__
68ca7a
#define __attr_weak__			__attribute__((weak))
2184c4
2184c4
#ifdef __PE_VISIBILITY__
2184c4
#define __attr_hidden__ 		__attribute__((visibility("hidden")))
2184c4
#define __attr_public__ 		__attribute__((visibility("default")))
2184c4
#define __attr_protected__ 		__attribute__((visibility("protected")))
2184c4
#else
2184c4
#define __attr_hidden__
2184c4
#define __attr_public__
2184c4
#define __attr_protected__
2184c4
#endif
2184c4
2184c4
2184c4
/* compiler-dependent assertions */
2184c4
#define __assert_aligned_size(s,a)	typedef char __assert##s [-(sizeof(s) % a)]
2184c4
#define __assert_struct_size(s1,s2)	typedef char __assert##s1##s2 [sizeof(s2) -sizeof(s1)]
2184c4
2184c4
2184c4
/* calling conventions */
2184c4
#if     defined(__X86_MODEL)
2184c4
#undef  __cdecl
2184c4
#define __cdecl		__attribute__((cdecl))
2184c4
2184c4
#undef  __fastcall
2184c4
#define	__fastcall	__attribute__((fastcall))
2184c4
2184c4
#undef  __stdcall
2184c4
#define __stdcall	__attribute__((stdcall))
2184c4
2184c4
#elif   defined (__X86_64_MODEL)
2184c4
2184c4
#undef  __cdecl
2184c4
#define __cdecl
2184c4
2184c4
#undef  __fastcall
2184c4
#define __fastcall
2184c4
2184c4
#undef  __stdcall
2184c4
#define __stdcall
2184c4
#endif
2184c4
2184c4
#undef APIENTRY
2184c4
#undef CALLBACK
2184c4
#undef NTAPI
2184c4
#undef WINAPI
2184c4
2184c4
#define APIENTRY	__stdcall
2184c4
#define CALLBACK	__stdcall
2184c4
#define NTAPI		__stdcall
2184c4
#define WINAPI		__stdcall
2184c4
2184c4
2184c4
2184c4
/* architecture-specific calling conventions */
2184c4
#if   defined(__X86_MODEL)
2184c4
	#undef  __stdcall
2184c4
	#define __stdcall 	__attribute__((__stdcall__))
2184c4
#elif defined(__X86_64_MODEL)
2184c4
	#undef  __stdcall
2184c4
	#define __stdcall
2184c4
#endif
2184c4
2184c4
#endif /* _PSXTYPES_NT_COMPILER_GCC_H_ */