aboutsummaryrefslogtreecommitdiff
path: root/libffi/src/sparc/v8.S
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2000-04-17 04:15:32 +0200
committerAnthony Green <green@gcc.gnu.org>2000-04-17 02:15:32 +0000
commit3791773c9395246e5fb860a20bb3dddd8e5edeb6 (patch)
tree5eee77be9c61a0f60260a8f47e6085ac5e0738a5 /libffi/src/sparc/v8.S
parent11033ba5226589d2e7a7055cda6ddf0379f7cad1 (diff)
downloadgcc-3791773c9395246e5fb860a20bb3dddd8e5edeb6.zip
gcc-3791773c9395246e5fb860a20bb3dddd8e5edeb6.tar.gz
gcc-3791773c9395246e5fb860a20bb3dddd8e5edeb6.tar.bz2
Port to sparc 32 and 64 Linux.
From-SVN: r33196
Diffstat (limited to 'libffi/src/sparc/v8.S')
-rw-r--r--libffi/src/sparc/v8.S10
1 files changed, 10 insertions, 0 deletions
diff --git a/libffi/src/sparc/v8.S b/libffi/src/sparc/v8.S
index da0dbe6..e4b2ba9 100644
--- a/libffi/src/sparc/v8.S
+++ b/libffi/src/sparc/v8.S
@@ -56,6 +56,7 @@ _ffi_call_V8:
ld [%l0+ARGS+20], %o5
call %i5
mov %l0, %sp ! (delay) switch to frame
+ nop ! STRUCT returning functions skip 12 instead of 8 bytes
! If the return value pointer is NULL, assume no return value.
tst %i4
@@ -70,6 +71,9 @@ _ffi_call_V8:
be,a done
st %f0, [%i4+0] ! (delay)
+ cmp %i3, FFI_TYPE_SINT64
+ be longlong
+
cmp %i3, FFI_TYPE_DOUBLE
bne done
nop
@@ -80,6 +84,12 @@ done:
ret
restore
+longlong:
+ st %o0, [%i4+0]
+ st %o1, [%i4+4]
+ ret
+ restore
+
.ffi_call_V8_end:
.size ffi_call_V8,.ffi_call_V8_end-ffi_call_V8