Ruby
2.4.2p198(2017-09-14revision59899)
|
#include <ffi.h>
#include <ffi_common.h>
#include <stdlib.h>
#include <stdbool.h>
#include <float.h>
#include "ia64_flags.h"
Go to the source code of this file.
Data Structures | |
struct | fpreg |
struct | ia64_args |
Macros | |
#define | stf_spill(addr, value) asm ("stf.spill %0 = %1%P0" : "=m" (*addr) : "f"(value)); |
#define | ldf_fill(result, addr) asm ("ldf.fill %0 = %1%P1" : "=f"(result) : "m"(*addr)); |
Typedefs | |
typedef void *PTR64 | __attribute__((mode(DI))) |
Functions | |
static void * | endian_adjust (void *addr, size_t len) |
static size_t | hfa_type_size (int type) |
static void | hfa_type_load (fpreg *fpaddr, int type, void *addr) |
static void | hfa_type_store (int type, void *addr, fpreg *fpaddr) |
static int | hfa_element_type (ffi_type *type, int nested) |
ffi_status | ffi_prep_cif_machdep (ffi_cif *cif) |
int | ffi_call_unix (struct ia64_args *, PTR64, void(*)(void), UINT64) |
void | ffi_call (ffi_cif *cif, void(*fn)(void), void *rvalue, void **avalue) |
void | ffi_closure_unix () |
ffi_status | ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif, void(*fun)(ffi_cif *, void *, void **, void *), void *user_data, void *codeloc) |
UINT64 | ffi_closure_unix_inner (ffi_closure *closure, struct ia64_args *stack, void *rvalue, void *r8) |
Definition at line 85 of file ffi.c.
Referenced by ffi_closure_unix_inner(), and hfa_type_store().
#define stf_spill | ( | addr, | |
value | |||
) | asm ("stf.spill %0 = %1%P0" : "=m" (*addr) : "f"(value)); |
Definition at line 79 of file ffi.c.
Referenced by ffi_call(), and hfa_type_load().
|
inlinestatic |
void ffi_call | ( | ffi_cif * | cif, |
void(*)(void) | fn, | ||
void * | rvalue, | ||
void ** | avalue | ||
) |
Definition at line 277 of file ffi.c.
References alloca(), FFI_ASSERT, ffi_call_unix(), ffi_closure_unix(), FFI_TYPE_LONGDOUBLE, FFI_UNIX, ia64_args::fp_regs, ia64_args::gp_regs, hfa_element_type(), hfa_type_load(), hfa_type_size(), memcpy, NULL, size, and stf_spill.
int ffi_call_unix | ( | struct ia64_args * | , |
PTR64 | , | ||
void(*)(void) | , | ||
UINT64 | |||
) |
Referenced by ffi_call(), and ffi_prep_cif_machdep().
void ffi_closure_unix | ( | ) |
Referenced by ffi_call().
UINT64 ffi_closure_unix_inner | ( | ffi_closure * | closure, |
struct ia64_args * | stack, | ||
void * | rvalue, | ||
void * | r8 | ||
) |
Definition at line 451 of file ffi.c.
References alloca(), endian_adjust(), FFI_ASSERT, FFI_TYPE_LONGDOUBLE, ia64_args::fp_regs, ia64_args::gp_regs, hfa_element_type(), hfa_type_size(), hfa_type_store(), ldf_fill, memcpy, result, and size.
ffi_status ffi_prep_cif_machdep | ( | ffi_cif * | cif | ) |
Definition at line 224 of file ffi.c.
References ffi_call_unix(), FFI_IA64_TYPE_SMALL_STRUCT, FFI_TYPE_LONGDOUBLE, ia64_args::gp_regs, hfa_element_type(), hfa_type_size(), offsetof, and size.
ffi_status ffi_prep_closure_loc | ( | ffi_closure * | closure, |
ffi_cif * | cif, | ||
void(*)(ffi_cif *, void *, void **, void *) | fun, | ||
void * | user_data, | ||
void * | codeloc | ||
) |
|
static |
Definition at line 168 of file ffi.c.
References FFI_IA64_TYPE_HFA_DOUBLE, FFI_IA64_TYPE_HFA_FLOAT, FFI_IA64_TYPE_HFA_LDOUBLE, and FFI_TYPE_LONGDOUBLE.
Referenced by ffi_call(), ffi_closure_unix_inner(), and ffi_prep_cif_machdep().
|
static |
Definition at line 111 of file ffi.c.
References FFI_IA64_TYPE_HFA_DOUBLE, FFI_IA64_TYPE_HFA_FLOAT, FFI_IA64_TYPE_HFA_LDOUBLE, and stf_spill.
Referenced by ffi_call().
|
static |
Definition at line 92 of file ffi.c.
References FFI_IA64_TYPE_HFA_DOUBLE, FFI_IA64_TYPE_HFA_FLOAT, and FFI_IA64_TYPE_HFA_LDOUBLE.
Referenced by ffi_call(), ffi_closure_unix_inner(), and ffi_prep_cif_machdep().
|
static |
Definition at line 133 of file ffi.c.
References FFI_IA64_TYPE_HFA_DOUBLE, FFI_IA64_TYPE_HFA_FLOAT, FFI_IA64_TYPE_HFA_LDOUBLE, ldf_fill, and result.
Referenced by ffi_closure_unix_inner().