Mercurial > repos > rliterman > csp2
comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/ffitarget.h @ 69:33d812a61356
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 17:55:14 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
67:0e9998148a16 | 69:33d812a61356 |
---|---|
1 /* -----------------------------------------------------------------*-C-*- | |
2 ffitarget.h - Copyright (c) 2012, 2014 Anthony Green | |
3 Copyright (c) 1996-2003, 2010 Red Hat, Inc. | |
4 Copyright (C) 2008 Free Software Foundation, Inc. | |
5 | |
6 Target configuration macros for x86 and x86-64. | |
7 | |
8 Permission is hereby granted, free of charge, to any person obtaining | |
9 a copy of this software and associated documentation files (the | |
10 ``Software''), to deal in the Software without restriction, including | |
11 without limitation the rights to use, copy, modify, merge, publish, | |
12 distribute, sublicense, and/or sell copies of the Software, and to | |
13 permit persons to whom the Software is furnished to do so, subject to | |
14 the following conditions: | |
15 | |
16 The above copyright notice and this permission notice shall be included | |
17 in all copies or substantial portions of the Software. | |
18 | |
19 THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, | |
20 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
21 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
22 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |
23 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |
24 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
25 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | |
26 DEALINGS IN THE SOFTWARE. | |
27 | |
28 ----------------------------------------------------------------------- */ | |
29 | |
30 #ifndef LIBFFI_TARGET_H | |
31 #define LIBFFI_TARGET_H | |
32 | |
33 #ifndef LIBFFI_H | |
34 #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." | |
35 #endif | |
36 | |
37 /* ---- System specific configurations ----------------------------------- */ | |
38 | |
39 /* For code common to all platforms on x86 and x86_64. */ | |
40 #define X86_ANY | |
41 | |
42 #if defined (X86_64) && defined (__i386__) | |
43 #undef X86_64 | |
44 #define X86 | |
45 #endif | |
46 | |
47 #ifdef X86_WIN64 | |
48 #define FFI_SIZEOF_ARG 8 | |
49 #define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */ | |
50 #endif | |
51 | |
52 #define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION | |
53 #define FFI_TARGET_HAS_COMPLEX_TYPE | |
54 | |
55 /* ---- Generic type definitions ----------------------------------------- */ | |
56 | |
57 #ifndef LIBFFI_ASM | |
58 #ifdef X86_WIN64 | |
59 #ifdef _MSC_VER | |
60 typedef unsigned __int64 ffi_arg; | |
61 typedef __int64 ffi_sarg; | |
62 #else | |
63 typedef unsigned long long ffi_arg; | |
64 typedef long long ffi_sarg; | |
65 #endif | |
66 #else | |
67 #if defined __x86_64__ && defined __ILP32__ | |
68 #define FFI_SIZEOF_ARG 8 | |
69 #define FFI_SIZEOF_JAVA_RAW 4 | |
70 typedef unsigned long long ffi_arg; | |
71 typedef long long ffi_sarg; | |
72 #else | |
73 typedef unsigned long ffi_arg; | |
74 typedef signed long ffi_sarg; | |
75 #endif | |
76 #endif | |
77 | |
78 typedef enum ffi_abi { | |
79 FFI_FIRST_ABI = 0, | |
80 | |
81 /* ---- Intel x86 Win32 ---------- */ | |
82 #ifdef X86_WIN32 | |
83 FFI_SYSV, | |
84 FFI_STDCALL, | |
85 FFI_THISCALL, | |
86 FFI_FASTCALL, | |
87 FFI_MS_CDECL, | |
88 FFI_PASCAL, | |
89 FFI_REGISTER, | |
90 FFI_LAST_ABI, | |
91 #ifdef _MSC_VER | |
92 FFI_DEFAULT_ABI = FFI_MS_CDECL | |
93 #else | |
94 FFI_DEFAULT_ABI = FFI_SYSV | |
95 #endif | |
96 | |
97 #elif defined(X86_WIN64) | |
98 FFI_WIN64, | |
99 FFI_LAST_ABI, | |
100 FFI_DEFAULT_ABI = FFI_WIN64 | |
101 | |
102 #else | |
103 /* ---- Intel x86 and AMD x86-64 - */ | |
104 FFI_SYSV, | |
105 FFI_UNIX64, /* Unix variants all use the same ABI for x86-64 */ | |
106 FFI_THISCALL, | |
107 FFI_FASTCALL, | |
108 FFI_STDCALL, | |
109 FFI_PASCAL, | |
110 FFI_REGISTER, | |
111 FFI_LAST_ABI, | |
112 #if defined(__i386__) || defined(__i386) | |
113 FFI_DEFAULT_ABI = FFI_SYSV | |
114 #else | |
115 FFI_DEFAULT_ABI = FFI_UNIX64 | |
116 #endif | |
117 #endif | |
118 } ffi_abi; | |
119 #endif | |
120 | |
121 /* ---- Definitions for closures ----------------------------------------- */ | |
122 | |
123 #define FFI_CLOSURES 1 | |
124 #define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1) | |
125 #define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2) | |
126 #define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3) | |
127 #define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4) | |
128 | |
129 #if defined (X86_64) || (defined (__x86_64__) && defined (X86_DARWIN)) | |
130 #define FFI_TRAMPOLINE_SIZE 24 | |
131 #define FFI_NATIVE_RAW_API 0 | |
132 #else | |
133 #ifdef X86_WIN32 | |
134 #define FFI_TRAMPOLINE_SIZE 52 | |
135 #else | |
136 #ifdef X86_WIN64 | |
137 #define FFI_TRAMPOLINE_SIZE 29 | |
138 #define FFI_NATIVE_RAW_API 0 | |
139 #define FFI_NO_RAW_API 1 | |
140 #else | |
141 #define FFI_TRAMPOLINE_SIZE 10 | |
142 #endif | |
143 #endif | |
144 #ifndef X86_WIN64 | |
145 #define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */ | |
146 #endif | |
147 #endif | |
148 | |
149 #endif | |
150 |