Edit

kc3-lang/libffi/src/sparc/internal.h

Branch :

  • Show log

    Commit

  • Author : Richard Henderson
    Date : 2014-10-26 15:29:04
    Hash : 6eec410f
    Message : sparc: Re-add abi compliant structure support The original code, removed in the "rewrite" patch, was incorrect for large structures, and required dynamic allocation of a trampoline on every ffi_call. Instead, allocate a 4k entry table of all possible structure returns. The table is 80k, but is read-only and dynamically paged, which ought to be better than allocating the trampoline. This is difficult to test with gcc. One can only use -O0 at present. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63668.

  • src/sparc/internal.h
  • #define SPARC_RET_VOID		0
    #define SPARC_RET_STRUCT	1
    #define SPARC_RET_UINT8		2
    #define SPARC_RET_SINT8		3
    #define SPARC_RET_UINT16	4
    #define SPARC_RET_SINT16	5
    #define SPARC_RET_UINT32	6
    #define SP_V9_RET_SINT32	7	/* v9 only */
    #define SP_V8_RET_CPLX16	7	/* v8 only */
    #define SPARC_RET_INT64		8
    #define SPARC_RET_INT128	9
    
    /* Note that F_7 is missing, and is handled by SPARC_RET_STRUCT.  */
    #define SPARC_RET_F_8		10
    #define SPARC_RET_F_6		11
    #define SPARC_RET_F_4		12
    #define SPARC_RET_F_2		13
    #define SP_V9_RET_F_3		14	/* v9 only */
    #define SP_V8_RET_CPLX8		14	/* v8 only */
    #define SPARC_RET_F_1		15
    
    #define SPARC_FLAG_RET_MASK	15
    #define SPARC_FLAG_RET_IN_MEM	32
    #define SPARC_FLAG_FP_ARGS	64
    
    #define SPARC_SIZEMASK_SHIFT	8