Commit 7efa52a3 by Steve Ellcey Committed by Steve Ellcey

* src/ia64/ffitarget.h (ffi_arg) ADD DI attribute.

	(ffi_sarg) Ditto.
	* src/ia64/unix.S (ffi_closure_unix): Extend gp
	to 64 bits in ILP32 mode.
	Load 64 bits even for short data.

From-SVN: r97283
parent 5662a50d
2005-03-30 Steve Ellcey <sje@cup.hp.com>
* src/ia64/ffitarget.h (ffi_arg) ADD DI attribute.
(ffi_sarg) Ditto.
* src/ia64/unix.S (ffi_closure_unix): Extend gp
to 64 bits in ILP32 mode.
Load 64 bits even for short data.
2005-03-23 Mike Stump <mrs@apple.com> 2005-03-23 Mike Stump <mrs@apple.com>
* src/powerpc/darwin.S: Update for -m64 multilib. * src/powerpc/darwin.S: Update for -m64 multilib.
......
...@@ -27,8 +27,8 @@ ...@@ -27,8 +27,8 @@
#define LIBFFI_TARGET_H #define LIBFFI_TARGET_H
#ifndef LIBFFI_ASM #ifndef LIBFFI_ASM
typedef unsigned long ffi_arg; typedef unsigned long ffi_arg __attribute__ ((mode (DI)));
typedef signed long ffi_sarg; typedef signed long ffi_sarg __attribute__ ((mode (DI)));
typedef enum ffi_abi { typedef enum ffi_abi {
FFI_FIRST_ABI = 0, FFI_FIRST_ABI = 0,
......
...@@ -290,8 +290,13 @@ ffi_closure_unix: ...@@ -290,8 +290,13 @@ ffi_closure_unix:
.body .body
/* Retrieve closure pointer and real gp. */ /* Retrieve closure pointer and real gp. */
#ifdef _ILP32
addp4 out0 = 0, gp
addp4 gp = 16, gp
#else
mov out0 = gp mov out0 = gp
add gp = 16, gp add gp = 16, gp
#endif
;; ;;
ld8 gp = [gp] ld8 gp = [gp]
...@@ -368,31 +373,7 @@ ffi_closure_unix: ...@@ -368,31 +373,7 @@ ffi_closure_unix:
add sp = FRAME_SIZE, sp add sp = FRAME_SIZE, sp
br.ret.sptk.many b0 br.ret.sptk.many b0
;; ;;
.Lld_int8: .Lld_int:
.body
.copy_state 1
ld1 r8 = [r16]
.restore sp
add sp = FRAME_SIZE, sp
br.ret.sptk.many b0
;;
.Lld_int16:
.body
.copy_state 1
ld2 r8 = [r16]
.restore sp
add sp = FRAME_SIZE, sp
br.ret.sptk.many b0
;;
.Lld_int32:
.body
.copy_state 1
ld4 r8 = [r16]
.restore sp
add sp = FRAME_SIZE, sp
br.ret.sptk.many b0
;;
.Lld_int64:
.body .body
.copy_state 1 .copy_state 1
ld8 r8 = [r16] ld8 r8 = [r16]
...@@ -554,20 +535,20 @@ ffi_closure_unix: ...@@ -554,20 +535,20 @@ ffi_closure_unix:
.Lld_table: .Lld_table:
data8 @pcrel(.Lld_void) // FFI_TYPE_VOID data8 @pcrel(.Lld_void) // FFI_TYPE_VOID
data8 @pcrel(.Lld_int32) // FFI_TYPE_INT data8 @pcrel(.Lld_int) // FFI_TYPE_INT
data8 @pcrel(.Lld_float) // FFI_TYPE_FLOAT data8 @pcrel(.Lld_float) // FFI_TYPE_FLOAT
data8 @pcrel(.Lld_double) // FFI_TYPE_DOUBLE data8 @pcrel(.Lld_double) // FFI_TYPE_DOUBLE
data8 @pcrel(.Lld_ldouble) // FFI_TYPE_LONGDOUBLE data8 @pcrel(.Lld_ldouble) // FFI_TYPE_LONGDOUBLE
data8 @pcrel(.Lld_int8) // FFI_TYPE_UINT8 data8 @pcrel(.Lld_int) // FFI_TYPE_UINT8
data8 @pcrel(.Lld_int8) // FFI_TYPE_SINT8 data8 @pcrel(.Lld_int) // FFI_TYPE_SINT8
data8 @pcrel(.Lld_int16) // FFI_TYPE_UINT16 data8 @pcrel(.Lld_int) // FFI_TYPE_UINT16
data8 @pcrel(.Lld_int16) // FFI_TYPE_SINT16 data8 @pcrel(.Lld_int) // FFI_TYPE_SINT16
data8 @pcrel(.Lld_int32) // FFI_TYPE_UINT32 data8 @pcrel(.Lld_int) // FFI_TYPE_UINT32
data8 @pcrel(.Lld_int32) // FFI_TYPE_SINT32 data8 @pcrel(.Lld_int) // FFI_TYPE_SINT32
data8 @pcrel(.Lld_int64) // FFI_TYPE_UINT64 data8 @pcrel(.Lld_int) // FFI_TYPE_UINT64
data8 @pcrel(.Lld_int64) // FFI_TYPE_SINT64 data8 @pcrel(.Lld_int) // FFI_TYPE_SINT64
data8 @pcrel(.Lld_void) // FFI_TYPE_STRUCT data8 @pcrel(.Lld_void) // FFI_TYPE_STRUCT
data8 @pcrel(.Lld_int64) // FFI_TYPE_POINTER data8 @pcrel(.Lld_int) // FFI_TYPE_POINTER
data8 @pcrel(.Lld_small_struct) // FFI_IA64_TYPE_SMALL_STRUCT data8 @pcrel(.Lld_small_struct) // FFI_IA64_TYPE_SMALL_STRUCT
data8 @pcrel(.Lld_hfa_float) // FFI_IA64_TYPE_HFA_FLOAT data8 @pcrel(.Lld_hfa_float) // FFI_IA64_TYPE_HFA_FLOAT
data8 @pcrel(.Lld_hfa_double) // FFI_IA64_TYPE_HFA_DOUBLE data8 @pcrel(.Lld_hfa_double) // FFI_IA64_TYPE_HFA_DOUBLE
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment