aboutsummaryrefslogtreecommitdiff
path: root/libffi/src/m68k/sysv.S
diff options
context:
space:
mode:
Diffstat (limited to 'libffi/src/m68k/sysv.S')
-rw-r--r--libffi/src/m68k/sysv.S96
1 files changed, 0 insertions, 96 deletions
diff --git a/libffi/src/m68k/sysv.S b/libffi/src/m68k/sysv.S
deleted file mode 100644
index a925d99e3ce..00000000000
--- a/libffi/src/m68k/sysv.S
+++ /dev/null
@@ -1,96 +0,0 @@
-/* -----------------------------------------------------------------------
- sysv.S
-
- m68k Foreign Function Interface
- ----------------------------------------------------------------------- */
-
-#define LIBFFI_ASM
-#include <ffi.h>
-
- .text
-
- .globl ffi_call_SYSV
- .type ffi_call_SYSV,@function
-
-ffi_call_SYSV:
- link %fp,#0
- move.l %d2,-(%sp)
-
- | Make room for all of the new args.
- sub.l 16(%fp),%sp
-
- | Call ffi_prep_args
- move.l 12(%fp),-(%sp)
- pea 4(%sp)
- move.l 8(%fp),%a0
- jsr (%a0)
- addq.l #8,%sp
-
- | Pass pointer to struct value, if any
- move.l %a0,%a1
-
- | Call the function
- move.l 32(%fp),%a0
- jsr (%a0)
-
- | Remove the space we pushed for the args
- add.l 16(%fp),%sp
-
- | Load the pointer to storage for the return value
- move.l 28(%fp),%a1
-
- | Load the return type code
- move.l 20(%fp),%d2
-
- | If the return value pointer is NULL, assume no return value.
- tst.l %a1
- jbeq noretval
-
- btst #0,%d2
- jbeq retlongint
- move.l %d0,(%a1)
- jbra epilogue
-
-retlongint:
- btst #1,%d2
- jbeq retfloat
- move.l %d0,(%a1)
- move.l %d1,4(%a1)
- jbra epilogue
-
-retfloat:
- btst #2,%d2
- jbeq retdouble
- fmove.s %fp0,(%a1)
- jbra epilogue
-
-retdouble:
- btst #3,%d2
- jbeq retlongdouble
- fmove.d %fp0,(%a1)
- jbra epilogue
-
-retlongdouble:
- btst #4,%d2
- jbeq retpointer
- fmove.x %fp0,(%a1)
- jbra epilogue
-
-retpointer:
- btst #5,%d2
- jbeq retstruct
- move.l %a0,(%a1)
- jbra epilogue
-
-retstruct:
- btst #6,%d2
- jbeq noretval
- move.l 24(%fp),%d2
- bfins %d0,(%a1){#0,%d2}
-
-noretval:
-epilogue:
- move.l (%sp)+,%d2
- unlk %a6
- rts
- .size ffi_call_SYSV,.-ffi_call_SYSV