From 2184c4043cb7e8ce93b9b09a29cecbc7c6c748bb Mon Sep 17 00:00:00 2001 From: midipix Date: Sun, 29 Mar 2015 00:03:40 -0400 Subject: psxtypes headers: renewed commit. --- include/psxtypes/compiler/__nt_compiler_gcc.h | 129 ++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 include/psxtypes/compiler/__nt_compiler_gcc.h (limited to 'include/psxtypes/compiler/__nt_compiler_gcc.h') diff --git a/include/psxtypes/compiler/__nt_compiler_gcc.h b/include/psxtypes/compiler/__nt_compiler_gcc.h new file mode 100644 index 0000000..4c80398 --- /dev/null +++ b/include/psxtypes/compiler/__nt_compiler_gcc.h @@ -0,0 +1,129 @@ +#ifndef _PSXTYPES_NT_COMPILER_GCC_H_ +#define _PSXTYPES_NT_COMPILER_GCC_H_ + + +/* compiler identification */ +#define __COMPILER__ __GCC__ +#define __COMPILER_DEPENDENT_SUFFIX__ __gcc + + +/* NTVER: the bare minimum */ +#ifndef NTVER + #define NTVER 0x0500 +#elif (NTVER < 0x0500) + #error __^@^__: NTVER: minimum supported NT version is 0x0500. +#endif + + +/* x86 processor model */ +#if defined(__i986__) + #define __X86_MODEL 986 +#elif defined(__i886__) + #define __X86_MODEL 886 +#elif defined(__i786__) + #define __X86_MODEL 786 +#elif defined(__i686__) + #define __X86_MODEL 686 +#elif defined(__i586__) + #define __X86_MODEL 586 +#elif defined(__i486__) + #define __X86_MODEL 486 +#elif defined(__i386__) + #define __X86_MODEL 386 +#endif + + +/* x86_64 processor model */ +#if defined(__amd64) && (__amd64) + #define __X86_64_MODEL __amd64 +#endif + + +/* va_list */ +#define __CUSTOM_OR_BUILTIN_va_list__ __builtin_va_list + + +/* compiler keywords */ +#define __in +#define __out +#define __in_opt +#define __out_opt +#define __in_out +#define __in_out_opt +#define __reserved +#define __optional +#define __simplified +#define __caller_allocated +#define __caller_initialized +#define __null_placeholder (0x0) + + +/* compiler attributes */ +#define __attr_aligned__(x) __attribute__((__aligned__(x))) +#define __attr_ptr_size_aligned__ __attr_aligned__(__SIZEOF_POINTER__) +#define __attr_packed__ __attribute__((__packed__)) +#define __attr_export__ __attribute__((dllexport)) +#define __attr_import__ __attribute__((dllimport)) +#define __attr_naked__ + +#ifdef __PE_VISIBILITY__ +#define __attr_hidden__ __attribute__((visibility("hidden"))) +#define __attr_public__ __attribute__((visibility("default"))) +#define __attr_protected__ __attribute__((visibility("protected"))) +#else +#define __attr_hidden__ +#define __attr_public__ +#define __attr_protected__ +#endif + + +/* compiler-dependent assertions */ +#define __assert_aligned_size(s,a) typedef char __assert##s [-(sizeof(s) % a)] +#define __assert_struct_size(s1,s2) typedef char __assert##s1##s2 [sizeof(s2) -sizeof(s1)] + + +/* calling conventions */ +#if defined(__X86_MODEL) +#undef __cdecl +#define __cdecl __attribute__((cdecl)) + +#undef __fastcall +#define __fastcall __attribute__((fastcall)) + +#undef __stdcall +#define __stdcall __attribute__((stdcall)) + +#elif defined (__X86_64_MODEL) + +#undef __cdecl +#define __cdecl + +#undef __fastcall +#define __fastcall + +#undef __stdcall +#define __stdcall +#endif + +#undef APIENTRY +#undef CALLBACK +#undef NTAPI +#undef WINAPI + +#define APIENTRY __stdcall +#define CALLBACK __stdcall +#define NTAPI __stdcall +#define WINAPI __stdcall + + + +/* architecture-specific calling conventions */ +#if defined(__X86_MODEL) + #undef __stdcall + #define __stdcall __attribute__((__stdcall__)) +#elif defined(__X86_64_MODEL) + #undef __stdcall + #define __stdcall +#endif + +#endif /* _PSXTYPES_NT_COMPILER_GCC_H_ */ -- cgit v1.2.3