0.7.4.17: Mostly Alpha fixes
[sbcl.git] / src / runtime / ldso-stubs.S
index a4a0868..a61dd0e 100644 (file)
  * provided with absolutely no warranty. See the COPYING and CREDITS
  * files for more information.
  */
-
-       .file   "ldso-stubs.S"
-       .version        "01.01"
-gcc2_compiled.:
+#include "sbcl.h"
         .text
 
-#if defined __i386__
+#if defined LISP_FEATURE_X86
        
 #define LDSO_STUBIFY(fct)                       \
        .align 16 ;                             \
@@ -41,11 +38,17 @@ ldso_stub__ ## fct: ;                           \
 .L ## fct ## e1: ;                              \
        .size    ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ;
 
-#elif defined alpha
-       
-       /* I _hope_ this is correct - I haven't checked in the manual
-        * yet.  It works to the point of building and passing tests,
-        * at any rate     - dan 2001.05.10 */
+#elif ((defined LISP_FEATURE_OSF1) && (defined LISP_FEATURE_ALPHA))
+/* osf1 has ancient cpp that doesn't do ## */
+#define LDSO_STUBIFY(fct)                       \
+.globl ldso_stub__/**/fct ;                     \
+ldso_stub__/**/fct: ;                           \
+       jmp fct ;                               \
+.L/**/fct/**/e1: ;                              
+
+
+#elif ((defined LISP_FEATURE_LINUX) && (defined LISP_FEATURE_ALPHA))   
+/* but there's no reason we need to put up with that on modern (Linux) OSes */
 #define LDSO_STUBIFY(fct)                       \
 .globl ldso_stub__ ## fct ;                     \
        .type    ldso_stub__ ## fct,@function ; \
@@ -53,6 +56,29 @@ ldso_stub__ ## fct: ;                           \
        jmp fct ;                               \
 .L ## fct ## e1: ;                              \
        .size    ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ;
+
+#elif defined LISP_FEATURE_PPC
+#define LDSO_STUBIFY(fct)                       \
+.globl ldso_stub__ ## fct ;                     \
+       .type    ldso_stub__ ## fct,@function ; \
+ldso_stub__ ## fct: ;                           \
+        b fct ;                                 \
+.L ## fct ## e1: ;                              \
+        .size    ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ;
+       
+#elif defined LISP_FEATURE_SPARC
+       
+       /* This is an attempt to follow DB's hint of sbcl-devel
+        * 2001-09-18. -- CSR */
+#define LDSO_STUBIFY(fct)                       \
+.globl ldso_stub__ ## fct ;                     \
+       .type    ldso_stub__ ## fct,@function ; \
+ldso_stub__ ## fct: ;                           \
+       sethi %hi(fct),%g1      ;               \
+       jmpl %g1+%lo(fct),%g0   ;               \
+       nop /* delay slot*/     ;               \
+.L ## fct ## e1: ;                              \
+       .size    ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ;
        
 #else
 #error unsupported CPU architecture
@@ -138,7 +164,9 @@ ldso_stub__ ## fct: ;                           \
  LDSO_STUBIFY(send)
  LDSO_STUBIFY(setitimer)
  LDSO_STUBIFY(setpgrp)
+#if !defined(SVR4)
  LDSO_STUBIFY(sigsetmask)
+#endif
  LDSO_STUBIFY(sinh)
  LDSO_STUBIFY(socket)
  LDSO_STUBIFY(stat)