Imported Upstream version 4.8.1
[platform/upstream/gcc48.git] / libffi / src / m68k / sysv.S
index dfdd864..f6f4ef9 100644 (file)
@@ -1,6 +1,7 @@
 /* -----------------------------------------------------------------------
        
-   sysv.S - Copyright (c) 1998, 2012 Andreas Schwab
+   sysv.S - Copyright (c) 2012 Alan Hourihane
+           Copyright (c) 1998, 2012 Andreas Schwab
            Copyright (c) 2008 Red Hat, Inc. 
    
    m68k Foreign Function Interface 
 #define CFI_ENDPROC()
 #endif
 
+#ifdef __MINT__
+#define CALLFUNC(funcname) _ ## funcname
+#else
+#define CALLFUNC(funcname) funcname
+#endif
+
        .text
 
-       .globl  ffi_call_SYSV
-       .type   ffi_call_SYSV,@function
+       .globl  CALLFUNC(ffi_call_SYSV)
+       .type   CALLFUNC(ffi_call_SYSV),@function
        .align  4
 
-ffi_call_SYSV:
+CALLFUNC(ffi_call_SYSV):
        CFI_STARTPROC()
        link    %fp,#0
        CFI_OFFSET(14,-8)
@@ -63,14 +70,18 @@ ffi_call_SYSV:
        move.l  8(%fp),-(%sp)
        pea     4(%sp)
 #if !defined __PIC__
-       jsr     ffi_prep_args
+       jsr     CALLFUNC(ffi_prep_args)
 #else
-       bsr.l   ffi_prep_args@PLTPC
+       bsr.l   CALLFUNC(ffi_prep_args@PLTPC)
 #endif
        addq.l  #8,%sp  
 
        | Pass pointer to struct value, if any
+#ifdef __MINT__
+       move.l  %d0,%a1
+#else
        move.l  %a0,%a1
+#endif
 
        | Call the function
        move.l  24(%fp),%a0
@@ -142,7 +153,11 @@ retlongdouble:
 retpointer:
        btst    #5,%d2
        jbeq    retstruct1
+#ifdef __MINT__
+       move.l  %d0,(%a1)
+#else
        move.l  %a0,(%a1)
+#endif
        jbra    epilogue
 
 retstruct1:
@@ -162,13 +177,13 @@ epilogue:
        unlk    %fp
        rts
        CFI_ENDPROC()
-       .size   ffi_call_SYSV,.-ffi_call_SYSV
+       .size   CALLFUNC(ffi_call_SYSV),.-CALLFUNC(ffi_call_SYSV)
 
-       .globl  ffi_closure_SYSV
-       .type   ffi_closure_SYSV, @function
+       .globl  CALLFUNC(ffi_closure_SYSV)
+       .type   CALLFUNC(ffi_closure_SYSV), @function
        .align  4
 
-ffi_closure_SYSV:
+CALLFUNC(ffi_closure_SYSV):
        CFI_STARTPROC()
        link    %fp,#-12
        CFI_OFFSET(14,-8)
@@ -178,9 +193,9 @@ ffi_closure_SYSV:
        pea     -12(%fp)
        move.l  %a0,-(%sp)
 #if !defined __PIC__
-       jsr     ffi_closure_SYSV_inner
+       jsr     CALLFUNC(ffi_closure_SYSV_inner)
 #else
-       bsr.l   ffi_closure_SYSV_inner@PLTPC
+       bsr.l   CALLFUNC(ffi_closure_SYSV_inner@PLTPC)
 #endif
 
        lsr.l   #1,%d0
@@ -240,13 +255,13 @@ ffi_closure_SYSV:
        jra     .Lcls_epilogue
        CFI_ENDPROC()
 
-       .size   ffi_closure_SYSV,.-ffi_closure_SYSV
+       .size   CALLFUNC(ffi_closure_SYSV),.-CALLFUNC(ffi_closure_SYSV)
 
-       .globl  ffi_closure_struct_SYSV
-       .type   ffi_closure_struct_SYSV, @function
+       .globl  CALLFUNC(ffi_closure_struct_SYSV)
+       .type   CALLFUNC(ffi_closure_struct_SYSV), @function
        .align  4
 
-ffi_closure_struct_SYSV:
+CALLFUNC(ffi_closure_struct_SYSV):
        CFI_STARTPROC()
        link    %fp,#0
        CFI_OFFSET(14,-8)
@@ -256,14 +271,14 @@ ffi_closure_struct_SYSV:
        move.l  %a1,-(%sp)
        move.l  %a0,-(%sp)
 #if !defined __PIC__
-       jsr     ffi_closure_SYSV_inner
+       jsr     CALLFUNC(ffi_closure_SYSV_inner)
 #else
-       bsr.l   ffi_closure_SYSV_inner@PLTPC
+       bsr.l   CALLFUNC(ffi_closure_SYSV_inner@PLTPC)
 #endif
        unlk    %fp
        rts
        CFI_ENDPROC()
-       .size   ffi_closure_struct_SYSV,.-ffi_closure_struct_SYSV
+       .size   CALLFUNC(ffi_closure_struct_SYSV),.-CALLFUNC(ffi_closure_struct_SYSV)
 
 #if defined __ELF__ && defined __linux__
        .section        .note.GNU-stack,"",@progbits