X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fx86-assem.S;h=19584b94d2929dd7f8c0350ba1e7805af45a78f2;hb=b870615b146940f661e5d0e9069ca4e16e9f483d;hp=b881daa5e5bbca58313203b20adc9f41572b4d75;hpb=be9eb6c67b5f43a095c3de17bea945c309d662e4;p=sbcl.git diff --git a/src/runtime/x86-assem.S b/src/runtime/x86-assem.S index b881daa..19584b9 100644 --- a/src/runtime/x86-assem.S +++ b/src/runtime/x86-assem.S @@ -16,7 +16,12 @@ #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 @@ -208,7 +213,7 @@ Ldone: 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 @@ -262,11 +267,7 @@ GNAME(undefined_tramp): 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) @@ -279,14 +280,14 @@ 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) /* @@ -328,11 +329,13 @@ GNAME(do_pending_interrupt): ret .size GNAME(do_pending_interrupt),.-GNAME(do_pending_interrupt) -#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 @@ -659,7 +662,7 @@ GNAME(alloc_16_to_edi): -#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.