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