[project @ 2001-04-17 21:41:29 by michaelw]
[ghc-hetmet.git] / ghc / rts / universal_call_c.S
index 49128c2..77f425a 100644 (file)
@@ -1,18 +1,20 @@
-
 /* --------------------------------------------------------------------------
  * Assembly code to call C and Haskell functions 
  *
- * Copyright (c) 1994-1999.
+ * Copyright (c) 1994-2001.
  *
- * $RCSfile: universal_call_c.S,v $
- * $Revision: 1.6 $
- * $Date: 1999/10/27 11:55:51 $
+ * $Id: universal_call_c.S,v 1.11 2001/02/12 12:08:44 sewardj Exp $
  * ------------------------------------------------------------------------*/
        
 #include "config.h"
-#include "options.h"   
+
+#if sparc_TARGET_ARCH
+       .text
+only_here_to_work_around_a_bug_in_GNU_ld_291_on_sparc:
+#endif
+       
+#if 0 /* later:         GHCI */
        
-#ifdef INTERPRETER
        .file "universal_call_c.S"
 
 #if 0
          }
       }
 #endif
-       
+
+#if LEADING_UNDERSCORE
+#define ADD_UNDERSCORE(sss) _##sss
+#else
+#define ADD_UNDERSCORE(sss) sss
+#endif
+
 #if i386_TARGET_ARCH
 
-# Tricky!  Calls the specified function using ccall convention,
-# *and* assumes that I myself was called using ccall.
+/*
+ * Tricky!  Calls the specified function using ccall convention,
+ * *and* assumes that I myself was called using ccall.
+ */
 
-.globl universal_call_c_x86_ccall
-universal_call_c_x86_ccall:
+.globl ADD_UNDERSCORE(universal_call_c_x86_ccall)
+ADD_UNDERSCORE(universal_call_c_x86_ccall:)
        pushl %ebp
        movl %esp,%ebp
        pushl %edi
@@ -146,8 +156,8 @@ universal_call_c_x86_ccall:
 # stdcall convention, *but* assumes that I myself was called 
 # using ccall.
        
-.globl universal_call_c_x86_stdcall
-universal_call_c_x86_stdcall:
+.globl ADD_UNDERSCORE(universal_call_c_x86_stdcall)
+ADD_UNDERSCORE(universal_call_c_x86_stdcall:)
        pushl %ebp
        movl %esp,%ebp
        pushl %edi
@@ -206,15 +216,15 @@ universal_call_c_x86_stdcall:
        fstpl 0(%esi)
        jmp .Lsbye      
 .Lsbye:
-       ## don_t clear the args -- the callee does it
-       ## leal -12(%ebp),%esp
+       /* don_t clear the args -- the callee does it */
+       /* leal -12(%ebp),%esp */
        popl %ebx
        popl %esi
        popl %edi
        leave
-       ## ret $16       # but we have to clear our own! (no! we were ccall_d)
+       /* ret $16     # but we have to clear our own! (no! we were ccall_d) */
        ret
 
 #endif /* i386_TARGET_ARCH */
        
-#endif /* INTERPRETER */
\ No newline at end of file
+#endif /* GHCI */