#define LANGUAGE_ASSEMBLY
#include "validate.h"
#include "sbcl.h"
+#include "genesis/closure.h"
+#include "genesis/fdefn.h"
+#include "genesis/static-symbols.h"
+#include "genesis/symbol.h"
+
/* Minimize conditionalization for different OS naming schemes. */
#if defined __linux__ || defined __FreeBSD__ /* (but *not* OpenBSD) */
#define GNAME(var) var
mov %ebx,%ebp # Switch to new frame.
/* Indirect the closure. */
- call *CLOSURE_FUNCTION_OFFSET(%eax)
+ call *CLOSURE_FUN_OFFSET(%eax)
/* Multi-value return; blow off any extra values. */
mov %ebx, %esp
int3
.byte trap_Error
.byte 2
-#ifdef type_LongFloat
- .byte 24
-#else
- .byte 23
-#endif
+ .byte UNDEFINED_FUN_ERROR
.byte sc_DescriptorReg # eax in the Descriptor-reg SC
ret
.size GNAME(undefined_tramp), .-GNAME(undefined_tramp)
.global GNAME(closure_tramp)
.type GNAME(closure_tramp),@function
GNAME(closure_tramp):
- movl FDEFN_FUNCTION_OFFSET(%eax),%eax
+ movl FDEFN_FUN_OFFSET(%eax),%eax
/* FIXME: The '*' after "jmp" in the next line is from PVE's
* patch posted to the CMU CL mailing list Oct 6, 1999. It looks
* reasonable, and it certainly seems as though if CMU CL needs it,
* SBCL needs it too, but I haven't actually verified that it's
* right. It would be good to find a way to force the flow of
* control through here to test it. */
- jmp *CLOSURE_FUNCTION_OFFSET(%eax)
+ jmp *CLOSURE_FUN_OFFSET(%eax)
.size GNAME(closure_tramp), .-GNAME(closure_tramp)
/*
ret
.size GNAME(do_pending_interrupt),.-GNAME(do_pending_interrupt)
\f
-#ifdef GENCGC
+#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
\f
-#ifdef GENCGC
+#ifdef LISP_FEATURE_GENCGC_INLINE_ALLOC /* disabled at present */
/* These routines are called from Lisp when an inline allocation
* overflows. Every register except the result needs to be preserved.