#include "genesis/symbol.h"
#include "genesis/thread.h"
-/* Minimize conditionalization for different OS naming schemes. */
-#if defined __linux__ || defined __FreeBSD__ /* (but *not* OpenBSD) */
+/* Minimize conditionalization for different OS naming schemes.
+ *
+ * (As of sbcl-0.8.10, this seems no longer to be much of an issue,
+ * since everyone has converged on ELF. If this generality really
+ * turns out not to matter, perhaps it's just clutter we could get
+ * rid of? -- WHN 2004-04-18)
+ */
+#if defined __linux__ || defined __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__
#define GNAME(var) var
#else
#define GNAME(var) _##var
#endif
-/* Get the right type of alignment. Linux and FreeBSD (but not OpenBSD)
- * want alignment in bytes. */
-#if defined(__linux__) || defined(__FreeBSD__)
+/* Get the right type of alignment. Linux, FreeBSD and NetBSD (but not OpenBSD)
+ * want alignment in bytes.
+ *
+ * (As in the GNAME() definitions above, as of sbcl-0.8.10, this seems
+ * no longer to be much of an issue, since everyone has converged on
+ * the same value. If this generality really turns out not to
+ * matter any more, perhaps it's just clutter we could get
+ * rid of? -- WHN 2004-04-18)
+ */
+#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
#define align_4byte 4
#define align_8byte 8
#define align_16byte 16
.text
.global GNAME(foreign_function_call_active)
.global GNAME(all_threads)
-
\f
/*
* A call to call_into_c preserves esi, edi, and ebp.
fnsave (%esp) # save and reset NPX
movl (%esp),%eax # Load NPX control word.
- andl $0xfffff3ff,%eax # Set rounding mode to nearest.
- orl $0x00000300,%eax # Set precision to 64 bits.
+ andl $0xfffff2ff,%eax # Set rounding mode to nearest.
+ orl $0x00000200,%eax # Set precision to 64 bits. (53-bit mantissa)
pushl %eax
fldcw (%esp) # Recover modes.
popl %eax
ret
.size GNAME(do_pending_interrupt),.-GNAME(do_pending_interrupt)
\f
-#ifdef LISP_FEATURE_GENCGC
-/* This is a fast bzero using the FPU. The first argument is the start
- * address which needs to be aligned on an 8 byte boundary, the second
- * argument is the number of bytes, which must be a nonzero multiple
- * of 8 bytes. */
-/* FIXME whether this is still faster than using the OS's bzero or
- * equivalent, we don't know */
- .text
- .globl GNAME(i586_bzero)
- .type GNAME(i586_bzero),@function
- .align align_4byte,0x90
-GNAME(i586_bzero):
- movl 4(%esp),%edx # Load the start address.
- movl 8(%esp),%eax # Load the number of bytes.
- fldz
-l1: fstl 0(%edx)
- addl $8,%edx
- subl $8,%eax
- jnz l1
- fstp %st(0)
- ret
- .size GNAME(i586_bzero),.-GNAME(i586_bzero)
-#endif
-\f
/*
* Allocate bytes and return the start of the allocated space