Ruby: ext/fiddle/libffi-3.2.1/src/powerpc/ffi_sysv.c File Reference

Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)

Macros | Functions
ffi_sysv.c File Reference
`#include "ffi.h"`
`#include "ffi_common.h"`
`#include "ffi_powerpc.h"`

Go to the source code of this file.

## Macros
#define | ASM_NEEDS_REGISTERS 4
#define | NUM_GPR_ARG_REGISTERS 8
#define | NUM_FPR_ARG_REGISTERS 8
#define | MIN_CACHE_LINE_SIZE 8

## Functions
ffi_status FFI_HIDDEN | ffi_prep_cif_sysv (ffi_cif *cif)
void FFI_HIDDEN | ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack)
ffi_status FFI_HIDDEN | ffi_prep_closure_loc_sysv (ffi_closure *closure, ffi_cif *cif, void(*fun)(ffi_cif *, void *, void **, void *), void *user_data, void *codeloc)
int | ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue, unsigned long *pgr, ffi_dblfl *pfr, unsigned long *pst)

## Macro Definition Documentation

## ◆ ASM_NEEDS_REGISTERS

#define ASM_NEEDS_REGISTERS 4

Definition at line 39 of file ffi_sysv.c.

## ◆ MIN_CACHE_LINE_SIZE

#define MIN_CACHE_LINE_SIZE 8

Definition at line 629 of file ffi_sysv.c.

## ◆ NUM_FPR_ARG_REGISTERS

#define NUM_FPR_ARG_REGISTERS 8

Definition at line 41 of file ffi_sysv.c.

## ◆ NUM_GPR_ARG_REGISTERS

#define NUM_GPR_ARG_REGISTERS 8

Definition at line 40 of file ffi_sysv.c.

## Function Documentation

## ◆ ffi_closure_helper_SYSV()

int ffi_closure_helper_SYSV | ( | ffi_closure * | closure,
|  | void * | rvalue,
|  | unsigned long * | pgr,
|  | ffi_dblfl * | pfr,
|  | unsigned long * | pst
| ) |  |

Definition at line 685 of file ffi_sysv.c.

References alloca, ffi_dblfl::d, ffi_dblfl::f, FFI_ASSERT, FFI_SYSV_STRUCT_RET, FFI_SYSV_TYPE_SMALL_STRUCT, FFI_TYPE_LONGDOUBLE, FFI_TYPE_UINT128, NUM_FPR_ARG_REGISTERS, and NUM_GPR_ARG_REGISTERS.

## ◆ ffi_prep_args_SYSV()

void FFI_HIDDEN ffi_prep_args_SYSV | ( | extended_cif * | ecif,
|  | unsigned *const | stack
| ) |  |

Definition at line 350 of file ffi_sysv.c.

References ASM_NEEDS_REGISTERS, extended_cif::avalue, extended_cif::cif, f, FFI_ASSERT, FFI_TYPE_LONGDOUBLE, FFI_TYPE_UINT128, FLAG_4_GPR_ARGUMENTS, FLAG_ARG_NEEDS_COPY, FLAG_FP_ARGUMENTS, FLAG_RETVAL_REFERENCE, long(), memcpy, NUM_FPR_ARG_REGISTERS, NUM_GPR_ARG_REGISTERS, ptr, and extended_cif::rvalue.

## ◆ ffi_prep_cif_sysv()

ffi_status FFI_HIDDEN ffi_prep_cif_sysv | ( | ffi_cif * | cif | ) |

Definition at line 290 of file ffi_sysv.c.

References FFI_COMPAT_GCC_SYSV, FFI_COMPAT_LINUX, FFI_COMPAT_LINUX_SOFT_FLOAT, FFI_COMPAT_SYSV, FFI_SYSV, FFI_SYSV_IBM_LONG_DOUBLE, FFI_SYSV_LONG_DOUBLE_128, FFI_SYSV_SOFT_FLOAT, FFI_SYSV_STRUCT_RET, and FLAG_COMPAT.

Referenced by ffi_prep_cif_machdep(), and ffi_prep_cif_machdep_var().

## ◆ ffi_prep_closure_loc_sysv()

ffi_status FFI_HIDDEN ffi_prep_closure_loc_sysv | ( | ffi_closure * | closure,
|  | ffi_cif * | cif,
|  | void(*)(ffi_cif *, void *, void **, void *) | fun,
|  | void * | user_data,
|  | void * | codeloc
| ) |  |

Definition at line 644 of file ffi_sysv.c.

References ffi_closure_SYSV(), FFI_LAST_ABI, FFI_SYSV, and FFI_TRAMPOLINE_SIZE.

Referenced by ffi_prep_closure_loc().