/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
|
|
Permission is hereby granted, free of charge, to any person obtaining
|
a copy of this software and associated documentation files (the
|
``Software''), to deal in the Software without restriction, including
|
without limitation the rights to use, copy, modify, merge, publish,
|
distribute, sublicense, and/or sell copies of the Software, and to
|
permit persons to whom the Software is furnished to do so, subject to
|
the following conditions:
|
|
The above copyright notice and this permission notice shall be
|
included in all copies or substantial portions of the Software.
|
|
THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
|
#ifndef LIBFFI_TARGET_H
|
#define LIBFFI_TARGET_H
|
|
#ifndef LIBFFI_H
|
#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
|
#endif
|
|
#ifndef LIBFFI_ASM
|
typedef unsigned long ffi_arg;
|
typedef signed long ffi_sarg;
|
|
typedef enum ffi_abi
|
{
|
FFI_FIRST_ABI = 0,
|
FFI_SYSV,
|
FFI_LAST_ABI,
|
FFI_DEFAULT_ABI = FFI_SYSV
|
} ffi_abi;
|
#endif
|
|
/* ---- Definitions for closures ----------------------------------------- */
|
|
#define FFI_CLOSURES 1
|
#define FFI_TRAMPOLINE_SIZE 36
|
#define FFI_NATIVE_RAW_API 0
|
|
/* ---- Internal ---- */
|
|
#if defined (__APPLE__)
|
#define FFI_TARGET_SPECIFIC_VARIADIC
|
#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_flags; unsigned aarch64_nfixedargs
|
#else
|
#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_flags
|
#endif
|
|
#define AARCH64_FFI_WITH_V_BIT 0
|
|
#define AARCH64_N_XREG 32
|
#define AARCH64_N_VREG 32
|
#define AARCH64_CALL_CONTEXT_SIZE (AARCH64_N_XREG * 8 + AARCH64_N_VREG * 16)
|
|
#endif
|