X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fx86-assem.S;h=be588391bcf36d3fe187bf0fc09e62d5139ef3d8;hb=7f0f521aa3f6b45259c5dfd5f7f11adcd1a7cac6;hp=5d77b3ec08a9524185694b9a476647e3d57817b5;hpb=3a0a9c16a4ccaebd6423f4fe7870111c4dab25a8;p=sbcl.git diff --git a/src/runtime/x86-assem.S b/src/runtime/x86-assem.S index 5d77b3e..be58839 100644 --- a/src/runtime/x86-assem.S +++ b/src/runtime/x86-assem.S @@ -208,7 +208,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 +262,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,23 +275,23 @@ 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) /* - * function-end breakpoint magic + * fun-end breakpoint magic */ .text - .global GNAME(function_end_breakpoint_guts) + .global GNAME(fun_end_breakpoint_guts) .align align_4byte -GNAME(function_end_breakpoint_guts): +GNAME(fun_end_breakpoint_guts): /* Multiple Value return */ jmp multiple_value_return /* Single value return: The eventual return will now use the @@ -309,14 +305,14 @@ GNAME(function_end_breakpoint_guts): multiple_value_return: - .global GNAME(function_end_breakpoint_trap) -GNAME(function_end_breakpoint_trap): + .global GNAME(fun_end_breakpoint_trap) +GNAME(fun_end_breakpoint_trap): int3 - .byte trap_FunctionEndBreakpoint + .byte trap_FunEndBreakpoint hlt # We should never return here. - .global GNAME(function_end_breakpoint_end) -GNAME(function_end_breakpoint_end): + .global GNAME(fun_end_breakpoint_end) +GNAME(fun_end_breakpoint_end): .global GNAME(do_pending_interrupt) @@ -328,63 +324,6 @@ GNAME(do_pending_interrupt): ret .size GNAME(do_pending_interrupt),.-GNAME(do_pending_interrupt) -#ifdef WANT_CGC -/* This is a copy function which is optimized for the Pentium and - * works OK on 486 as well. This assumes (does not check) that the - * input byte count is a multiple of 8 bytes (one Lisp object). - * This code takes advantage of pairing in the Pentium as well - * as the 128-bit cache line. - */ - .global GNAME(fastcopy16) - .type GNAME(fastcopy16),@function - .align align_4byte,0x90 -GNAME(fastcopy16): - pushl %ebp - movl %esp,%ebp - movl 8(%ebp), %edx # dst - movl 12(%ebp),%eax # src - movl 16(%ebp),%ecx # bytes - pushl %ebx - pushl %esi - pushl %edi - movl %edx,%edi - movl %eax,%esi - sarl $3,%ecx # number 8-byte units - testl $1,%ecx # odd? - jz Lquad - movl (%esi),%eax - movl 4(%esi),%ebx - movl %eax,(%edi) - movl %ebx,4(%edi) - leal 8(%esi),%esi - leal 8(%edi),%edi -Lquad: sarl $1,%ecx # count 16-byte units - jz Lend - movl %ecx,%ebp # use ebp for loop counter - .align align_16byte,0x90 -Ltop: - movl (%edi),%eax # prefetch! MAJOR Pentium win.. - movl (%esi),%eax - movl 4(%esi),%ebx - movl 8(%esi),%ecx - movl 12(%esi),%edx - movl %eax, (%edi) - movl %ebx, 4(%edi) - movl %ecx, 8(%edi) - movl %edx,12(%edi) - leal 16(%esi),%esi - leal 16(%edi),%edi - decl %ebp - jnz Ltop # non-prefixed jump saves cycles -Lend: - popl %edi - popl %esi - popl %ebx - popl %ebp - ret - .size GNAME(fastcopy16),.-GNAME(fastcopy16) -#endif - #ifdef 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