Changeset 8856


Ignore:
Timestamp:
Mar 22, 2008, 3:28:41 AM (11 years ago)
Author:
rme
Message:

.SPtfuncallslide, .SPspecref, .SPgets32, .SPgetu32, and .SPbuiltin_memq.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ia32/lisp-kernel/x86-spentry32.s

    r8835 r8856  
    10201020
    10211021_spentry(syscall)
    1022         __(int $3)
    10231022        /* Save lisp registers */
    10241023        __(push %ebp)
     
    10641063/* copy the result into %mm0. */
    10651064_spentry(syscall2)
    1066         __(int $3)
    10671065        /* Save lisp registers */
    10681066        __(push %ebp)
     
    20482046/* Some args were pushed; move them down in the frame   */
    20492047_spentry(tfuncallslide)
    2050         __(int $3)
     2048        __(lea -nargregs*node_size(%esp,%nargs),%imm0)
     2049        __(movd %nargs,%mm0)
     2050        __(xorl %temp1,%temp1)
     2051        __(movl %temp0,%rcontext:tcr.save0)
     20520:      __(movl -node_size(%imm0),%temp0)
     2053        __(movl %temp0,-node_size(%ebp,%temp1))
     2054        __(subl $node_size,%imm0)
     2055        __(subl $node_size,%temp1)
     2056        __(cmpl %imm0,%esp)
     2057        __(jne 0b)
     2058        __(lea (%ebp,%temp1),%esp)
     2059        __(push 4(%ebp))        /* return address */
     2060        __(movl (%ebp),%ebp)
     2061        __(movd %mm0,%nargs)
     2062        __(movl %rcontext:tcr.save0,%temp0)
     2063        __(movss %fpzero,%rcontext:tcr.save0)
     2064        __(do_funcall())
    20512065_endsubp(tfuncallslide)
    20522066
     
    23882402/* unbound_marker), arg_y = symbol */
    23892403_spentry(specref)
    2390         __(int $3)
     2404        __(movl symbol.binding_index(%arg_z),%imm0)
     2405        __(cmp %rcontext:tcr.tlb_limit,%imm0)
     2406        __(movl %rcontext:tcr.tlb_pointer,%temp1)
     2407        __(movl %arg_z,%arg_y)
     2408        __(jae 7f)
     2409        __(movl (%temp1,%imm0),%arg_z)
     2410        __(cmpb $no_thread_local_binding_marker,%arg_z_b)
     2411        __(jne 8f)
     24127:      __(movl symbol.vcell(%arg_y),%arg_z)
     24138:      __(repret)             
    23912414_endsubp(specref)
    23922415
     
    24482471_endsubp(makeu32)
    24492472
     2473/* arg_z is of type (signed-byte 32) */
     2474/* return unboxed value in %imm0 */
    24502475_spentry(gets32)
    2451         __(int $3)
     2476        __(testb $fixnummask,%arg_z_b)
     2477        __(jne 1f)
     2478        __(unbox_fixnum(%arg_z,%imm0))
     2479        __(ret)
     24801:      __(movb %arg_z_b,%imm0_b)
     2481        __(andb $tagmask,%imm0_b)
     2482        __(cmpb $tag_misc,%imm0_b)
     2483        __(jne 9f)
     2484        __(movb misc_subtag_offset(%arg_z),%imm0_b)
     2485        __(cmpb $subtag_bignum,%imm0_b)
     2486        __(jne 9f)
     2487        __(movl misc_header_offset(%arg_z),%imm0)
     2488        __(cmpl $one_digit_bignum_header,%imm0)
     2489        __(jne 9f)
     2490        __(movl misc_data_offset(%arg_z),%imm0)
     2491        __(ret)
     24929:      __(uuo_error_reg_not_type(Rarg_z,error_object_not_signed_byte_32))
    24522493_endsubp(gets32)
    24532494
     2495/* arg_z is of type (unsigned-byte 32) */
     2496/* return unboxed value in %imm0 */
    24542497_spentry(getu32)
    2455         __(int $3)
     2498        __(movl $~(target_most_positive_fixnum << fixnumshift),%imm0)
     2499        __(testl %arg_z,%imm0)
     2500        __(movl %arg_z,%imm0)
     2501        __(jne 1f)
     2502        __(sarl $fixnumshift,%imm0)
     2503        __(ret)
     25041:      __(andb $tagmask,%imm0_b)
     2505        __(cmpb $tag_misc,%imm0_b)
     2506        __(jne 9f)
     2507        __(movb misc_subtag_offset(%arg_z),%imm0_b)
     2508        __(cmpb $subtag_bignum,%imm0_b)
     2509        __(jne 9f)
     2510        __(movl misc_header_offset(%arg_z),%imm0)
     2511        __(cmpl $two_digit_bignum_header,%imm0)
     2512        __(je 2f)
     2513        __(cmpl $one_digit_bignum_header,%imm0)
     2514        __(jne 9f)
     2515        __(movl misc_data_offset(%arg_z),%imm0)
     2516        __(ret)
     25172:      __(movl misc_data_offset(%arg_z),%imm0)
     2518        __(cmpl $0,misc_data_offset+4(%arg_z))
     2519        __(jne 9f)
     2520        __(ret)
     25219:      __(uuo_error_reg_not_type(Rarg_z,error_object_not_unsigned_byte_32))
    24562522_endsubp(getu32)
    24572523
     
    27762842
    27772843_spentry(builtin_memq)
    2778         __(int $3)
     2844        __(cmpl $nil_value,%arg_z)
     2845        __(jmp 3f)
     28461:      __(movb $fulltagmask,%imm0_b)
     2847        __(andb %arg_z_b,%imm0_b)
     2848        __(cmpb $fulltag_cons,%imm0_b)
     2849        __(jz,pt 2f)
     2850        __(uuo_error_reg_not_list(Rarg_z))
     28512:      __(_car(%arg_z,%temp1))
     2852        __(_cdr(%arg_z,%temp0))
     2853        __(cmpl %temp1,%arg_y)
     2854        __(jz 4f)
     2855        __(cmpl $nil_value,%temp0)
     2856        __(movl %temp0,%arg_z)
     28573:      __(jnz 1b)
     28584:      __(repret)
    27792859_endsubp(builtin_memq)
    27802860
Note: See TracChangeset for help on using the changeset viewer.