Skip to content
Snippets Groups Projects
  • Eric Botcazou's avatar
    0ce78f01
    ffi.c (ffi_prep_args_v9): Shift the parameter array when the structure return... · 0ce78f01
    Eric Botcazou authored
    ffi.c (ffi_prep_args_v9): Shift the parameter array when the structure return address is passed in %o0.
    
    	* src/sparc/ffi.c (ffi_prep_args_v9): Shift the parameter array
    	when the structure return address is passed in %o0.
    	(ffi_V9_return_struct): Rename into ffi_v9_layout_struct.
    	(ffi_v9_layout_struct): Align the field following a nested structure
    	on a word boundary.  Use memmove instead of memcpy.
    	(ffi_call): Update call to ffi_V9_return_struct.
    	(ffi_prep_closure): Define 'ctx' only for V8.
    	(ffi_closure_sparc_inner): Clone into ffi_closure_sparc_inner_v8
    	and ffi_closure_sparc_inner_v9.
    	(ffi_closure_sparc_inner_v8): Return long doubles by reference.
    	Always skip the structure return address.  For structures and long
    	doubles, copy the argument directly.
    	(ffi_closure_sparc_inner_v9): Skip the structure return address only
    	if required.  Shift the maximum floating-point slot accordingly.  For
    	big structures, copy the argument directly; otherwise, left-justify the
    	argument and call ffi_v9_layout_struct to lay out the structure on
    	the stack.
    	* src/sparc/v8.S: Undef STACKFRAME before defining it.
    	(ffi_closure_v8): Pass the structure return address.  Update call to
    	ffi_closure_sparc_inner_v8.  Short-circuit FFI_TYPE_INT handling.
    	Skip the 'unimp' insn when returning long doubles and structures.
    	* src/sparc/v9.S: Undef STACKFRAME before defining it.
    	(ffi_closure_v9): Increase the frame size by 2 words.  Short-circuit
    	FFI_TYPE_INT handling.  Load structures both in integers and
    	floating-point registers on return.
    	* README: Update status of the SPARC port.
    
    From-SVN: r76543
    0ce78f01
    History
    ffi.c (ffi_prep_args_v9): Shift the parameter array when the structure return...
    Eric Botcazou authored
    ffi.c (ffi_prep_args_v9): Shift the parameter array when the structure return address is passed in %o0.
    
    	* src/sparc/ffi.c (ffi_prep_args_v9): Shift the parameter array
    	when the structure return address is passed in %o0.
    	(ffi_V9_return_struct): Rename into ffi_v9_layout_struct.
    	(ffi_v9_layout_struct): Align the field following a nested structure
    	on a word boundary.  Use memmove instead of memcpy.
    	(ffi_call): Update call to ffi_V9_return_struct.
    	(ffi_prep_closure): Define 'ctx' only for V8.
    	(ffi_closure_sparc_inner): Clone into ffi_closure_sparc_inner_v8
    	and ffi_closure_sparc_inner_v9.
    	(ffi_closure_sparc_inner_v8): Return long doubles by reference.
    	Always skip the structure return address.  For structures and long
    	doubles, copy the argument directly.
    	(ffi_closure_sparc_inner_v9): Skip the structure return address only
    	if required.  Shift the maximum floating-point slot accordingly.  For
    	big structures, copy the argument directly; otherwise, left-justify the
    	argument and call ffi_v9_layout_struct to lay out the structure on
    	the stack.
    	* src/sparc/v8.S: Undef STACKFRAME before defining it.
    	(ffi_closure_v8): Pass the structure return address.  Update call to
    	ffi_closure_sparc_inner_v8.  Short-circuit FFI_TYPE_INT handling.
    	Skip the 'unimp' insn when returning long doubles and structures.
    	* src/sparc/v9.S: Undef STACKFRAME before defining it.
    	(ffi_closure_v9): Increase the frame size by 2 words.  Short-circuit
    	FFI_TYPE_INT handling.  Load structures both in integers and
    	floating-point registers on return.
    	* README: Update status of the SPARC port.
    
    From-SVN: r76543