Changeset 8647


Ignore:
Timestamp:
Mar 4, 2008, 4:16:00 AM (12 years ago)
Author:
rme
Message:

SPmisc_ref, misc_ref_common updates, SPsubtag_misc_set, SPmisc_set,
misc_set_common, SPmakes64 fixes, SPrplacd, SPstore_node_conditional,
SPmisc_alloc_init, SPbuiltin_eql, SPbuiltin_ash.

Delete trailing whitespace.

File:
1 edited

Legend:

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

    r8635 r8647  
    11        include(lisp.s)
    22        _beginfile
    3        
     3
    44        .align 2
    55define([_spentry],[ifdef([__func_name],[_endfn],[])
     
    1919])
    2020
    21 _spentry(bad_funcall)   
    22         .globl C(bad_funcall)   
     21_spentry(bad_funcall)
     22        .globl C(bad_funcall)
    2323__(tra(C(bad_funcall)))
    2424        __(uuo_error_not_callable)
     
    3838_endsubp(fix_overflow)
    3939
     40/* %arg_y = vector, %arg_z = unscaled-idx */
    4041_spentry(misc_ref)
    4142        __(int $3)
     43        __(mov %arg_y,%imm0)
     44        __(andb $tagmask,%imm0_b)
     45        __(cmpb $tag_misc,%imm0_b)
     46        __(je,pt 0f)
     47        __(uuo_error_reg_not_tag(Rarg_y,tag_misc))
     480:      __(testb $fixnummask,%arg_z_b)
     49        __(je,pt 1f)
     50        __(uuo_error_reg_not_fixnum(Rarg_z))
     511:      __(movl misc_header_offset(%arg_y),%imm0)
     52        __(xorb %imm0_b,%imm0_b)
     53        __(shrl $num_subtag_bits-fixnumshift,%imm0)
     54        __(jb,pt 2f)
     55        __(uuo_error_vector_bounds(Rarg_z,Rarg_y))
     56        __(xorl %imm0,%imm0)
     57        __(movb misc_subtag_offset(%arg_y),%imm0_b)
     58        /* fall through */
    4259_endsubp(misc_ref)
    4360
    44 /* %imm0 = subtag, %arg_y = uvector, %arg_z = index. */
     61/* %imm0 = subtag, %arg_y = vector, %arg_z = index. */
    4562/* Bounds/type-checking done in caller. */
    4663_startfn(C(misc_ref_common))
    47         __(shll $word_shift,%imm0)
    48         __(addl $local_label(misc_ref_jmp),%imm0)
     64        __(leal local_label(misc_ref_jmp)(,%imm0,4),%imm0)
    4965        __(jmp *(%imm0))
    5066        .p2align 2
     
    214230        .long local_label(misc_ref_invalid) /* 98 even_fixnum  */
    215231        .long local_label(misc_ref_invalid) /* 99 cons  */
    216         .long local_label(misc_ref_node) /* 9a arrayN  */
     232        .long local_label(misc_ref_node) /* 9a arrayH  */
    217233        .long local_label(misc_ref_invalid) /* 9b imm  */
    218234        .long local_label(misc_ref_invalid) /* 9c odd_fixnum  */
     
    396412        __(ret)
    397413local_label(misc_ref_invalid):
     414        __(push $reserved_frame_marker)
     415        __(push $reserved_frame_marker)
    398416        __(push $XBADVEC)
    399417        __(set_nargs(3))
     
    421439_endsubp(subtag_misc_ref)
    422440
     441/* Like misc_set, only the boxed subtag is in temp1. */
    423442_spentry(subtag_misc_set)
    424443        __(int $3)
     444        __(mov %temp0,%imm0)
     445        __(andb $tagmask,%imm0_b)
     446        __(cmpb $tag_misc,%imm0_b)
     447        __(je,pt 0f)
     448        __(uuo_error_reg_not_tag(Rtemp0,tag_misc))
     4490:      __(mov %arg_y,%imm0)
     450        __(testb $fixnummask,%imm0_b)
     451        __(je,pt 1f)
     452        __(uuo_error_reg_not_fixnum(Rarg_y))
     4531:      __(movl misc_header_offset(%temp0),%imm0)
     454        __(xorb %imm0_b,%imm0_b)
     455        __(shrl $num_subtag_bits-fixnumshift,%imm0)
     456        __(cmpl %imm0,%arg_y)
     457        __(jb 2f)
     458        __(uuo_error_vector_bounds(Rarg_y,Rtemp0))
     4592:      __(unbox_fixnum(%temp1,%imm0))
     460        __(jmp C(misc_set_common))
    425461_endsubp(subtag_misc_set)
    426462
     463/* %temp0 = vector, %arg_y = unscaled-idx, %arg_z = val */
    427464_spentry(misc_set)
    428         __(int $3)
     465        __(mov %temp0,%imm0)
     466        __(andb $tagmask,%imm0_b)
     467        __(cmpb $tag_misc,%imm0_b)
     468        __(je,pt 0f)
     469        __(uuo_error_reg_not_tag(Rtemp0,tag_misc))
     4700:      __(mov %arg_y,%imm0)    /* no byte reg for %arg_y/%esi */
     471        __(testb $fixnummask,%imm0_b)
     472        __(je,pt 1f)
     473        __(uuo_error_reg_not_fixnum(Rarg_y))
     4741:      __(movl misc_header_offset(%temp0),%imm0)
     475        __(xorb %imm0_b,%imm0_b)
     476        __(shrl $num_subtag_bits-fixnumshift,%imm0)
     477        __(cmpl %imm0,%arg_y)
     478        __(jb 2f)
     479        __(uuo_error_vector_bounds(Rarg_y,Rtemp0))
     4802:      __(xorl %imm0,%imm0)
     481        __(movb misc_subtag_offset(%temp0),%imm0_b)
     482        /* fall through */
    429483_endsubp(misc_set)
    430484
     485/* imm0 = subtag, %temp0 = vector, %arg_y = index, %arg_z = value */
    431486_startfn(C(misc_set_common))
    432         __(ret)
     487        __(leal local_label(misc_set_jmp)(,%imm0,4),%imm0)
     488        __(jmp *(%imm0))
     489        .p2align 2
     490local_label(misc_set_jmp):
     491        /* 00-0f */
     492        .long local_label(misc_set_invalid) /* 00 even_fixnum  */
     493        .long local_label(misc_set_invalid) /* 01 cons  */
     494        .long local_label(misc_set_invalid) /* 02 nodeheader  */
     495        .long local_label(misc_set_invalid) /* 03 imm  */
     496        .long local_label(misc_set_invalid) /* 04 odd_fixnum  */
     497        .long local_label(misc_set_invalid) /* 05 tra  */
     498        .long local_label(misc_set_invalid) /* 06 misc  */
     499        .long local_label(misc_set_u32) /* 07 bignum  */
     500        .long local_label(misc_set_invalid) /* 08 even_fixnum  */
     501        .long local_label(misc_set_invalid) /* 09 cons  */
     502        .long _SPgvset /* 0a ratio  */
     503        .long local_label(misc_set_invalid) /* 0b imm  */
     504        .long local_label(misc_set_invalid) /* 0c odd_fixnum  */
     505        .long local_label(misc_set_invalid) /* 0d tra  */
     506        .long local_label(misc_set_invalid) /* 0e misc  */
     507        .long local_label(misc_set_u32) /* 0f single_float  */
     508        /* 10-1f  */
     509        .long local_label(misc_set_invalid) /* 10 even_fixnum  */
     510        .long local_label(misc_set_invalid) /* 11 cons  */
     511        .long local_label(misc_set_invalid) /* 12 nodeheader  */
     512        .long local_label(misc_set_invalid) /* 13 imm  */
     513        .long local_label(misc_set_invalid) /* 14 odd_fixnum  */
     514        .long local_label(misc_set_invalid) /* 15 tra  */
     515        .long local_label(misc_set_invalid) /* 16 misc  */
     516        .long local_label(misc_set_u32) /* 17 double_float  */
     517        .long local_label(misc_set_invalid) /* 18 even_fixnum  */
     518        .long local_label(misc_set_invalid) /* 19 cons  */
     519        .long _SPgvset /* 1a complex  */
     520        .long local_label(misc_set_invalid) /* 1b imm  */
     521        .long local_label(misc_set_invalid) /* 1c odd_fixnum  */
     522        .long local_label(misc_set_invalid) /* 1d tra  */
     523        .long local_label(misc_set_invalid) /* 1e misc  */
     524        .long local_label(misc_set_u32) /* 1f macptr  */
     525        /* 20-2f  */
     526        .long local_label(misc_set_invalid) /* 20 even_fixnum  */
     527        .long local_label(misc_set_invalid) /* 21 cons  */
     528        .long local_label(misc_set_invalid) /* 22 catch_frame  */
     529        .long local_label(misc_set_invalid) /* 23 imm  */
     530        .long local_label(misc_set_invalid) /* 24 odd_fixnum  */
     531        .long local_label(misc_set_invalid) /* 25 tra  */
     532        .long local_label(misc_set_invalid) /* 26 misc  */
     533        .long local_label(misc_set_u32) /* 27 dead_macptr  */
     534        .long local_label(misc_set_invalid) /* 28 even_fixnum  */
     535        .long local_label(misc_set_invalid) /* 29 cons  */
     536        .long local_label(misc_set_function) /* 2a function  */
     537        .long local_label(misc_set_invalid) /* 2b imm  */
     538        .long local_label(misc_set_invalid) /* 2c odd_fixnum  */
     539        .long local_label(misc_set_invalid) /* 2d tra  */
     540        .long local_label(misc_set_invalid) /* 2e misc  */
     541        .long local_label(misc_set_invalid) /* 2f immheader  */
     542        /* 30-3f  */
     543        .long local_label(misc_set_invalid) /* 30 even_fixnum  */
     544        .long local_label(misc_set_invalid) /* 31 cons  */
     545        .long local_label(misc_set_invalid) /* 32 nodeheader  */
     546        .long local_label(misc_set_invalid) /* 33 imm  */
     547        .long local_label(misc_set_invalid) /* 34 odd_fixnum  */
     548        .long local_label(misc_set_invalid) /* 35 tra  */
     549        .long local_label(misc_set_invalid) /* 36 misc  */
     550        .long local_label(misc_set_invalid) /* 37 immheader  */
     551        .long local_label(misc_set_invalid) /* 38 even_fixnum  */
     552        .long local_label(misc_set_invalid) /* 39 cons  */
     553        .long _SPgvset /* 3a symbol  */
     554        .long local_label(misc_set_invalid) /* 3b imm  */
     555        .long local_label(misc_set_invalid) /* 3c odd_fixnum  */
     556        .long local_label(misc_set_invalid) /* 3d tra  */
     557        .long local_label(misc_set_invalid) /* 3e misc  */
     558        .long local_label(misc_set_u32) /* 3f xcode_vector  */
     559        /* 40-4f  */
     560        .long local_label(misc_set_invalid) /* 40 even_fixnum  */
     561        .long local_label(misc_set_invalid) /* 41 cons  */
     562        .long _SPgvset /* 42 lock  */
     563        .long local_label(misc_set_invalid) /* 43 imm  */
     564        .long local_label(misc_set_invalid) /* 44 odd_fixnum  */
     565        .long local_label(misc_set_invalid) /* 45 tra  */
     566        .long local_label(misc_set_invalid) /* 46 misc  */
     567        .long local_label(misc_set_invalid) /* 47 immheader  */
     568        .long local_label(misc_set_invalid) /* 48 even_fixnum  */
     569        .long local_label(misc_set_invalid) /* 49 cons  */
     570        .long _SPgvset /* 4a hash_vector  */
     571        .long local_label(misc_set_invalid) /* 4b imm  */
     572        .long local_label(misc_set_invalid) /* 4c odd_fixnum  */
     573        .long local_label(misc_set_invalid) /* 4d tra  */
     574        .long local_label(misc_set_invalid) /* 4e misc  */
     575        .long local_label(misc_set_invalid) /* 4f immheader  */
     576        /* 50-5f  */
     577        .long local_label(misc_set_invalid) /* 50 even_fixnum  */
     578        .long local_label(misc_set_invalid) /* 51 cons  */
     579        .long _SPgvset /* 52 pool  */
     580        .long local_label(misc_set_invalid) /* 53 imm  */
     581        .long local_label(misc_set_invalid) /* 54 odd_fixnum  */
     582        .long local_label(misc_set_invalid) /* 55 tra  */
     583        .long local_label(misc_set_invalid) /* 56 misc  */
     584        .long local_label(misc_set_invalid) /* 57 immheader  */
     585        .long local_label(misc_set_invalid) /* 58 even_fixnum  */
     586        .long local_label(misc_set_invalid) /* 59 cons  */
     587        .long _SPgvset /* 5a weak  */
     588        .long local_label(misc_set_invalid) /* 5b imm  */
     589        .long local_label(misc_set_invalid) /* 5c odd_fixnum  */
     590        .long local_label(misc_set_invalid) /* 5d tra  */
     591        .long local_label(misc_set_invalid) /* 5e misc  */
     592        .long local_label(misc_set_invalid) /* 5f immheader  */
     593        /* 60-6f  */
     594        .long local_label(misc_set_invalid) /* 60 even_fixnum  */
     595        .long local_label(misc_set_invalid) /* 61 cons  */
     596        .long _SPgvset /* 62 package  */
     597        .long local_label(misc_set_invalid) /* 63 imm  */
     598        .long local_label(misc_set_invalid) /* 64 odd_fixnum  */
     599        .long local_label(misc_set_invalid) /* 65 tra  */
     600        .long local_label(misc_set_invalid) /* 66 misc  */
     601        .long local_label(misc_set_invalid) /* 67 immheader  */
     602        .long local_label(misc_set_invalid) /* 68 even_fixnum  */
     603        .long local_label(misc_set_invalid) /* 69 cons  */
     604        .long _SPgvset /* 6a slot_vector  */
     605        .long local_label(misc_set_invalid) /* 6b imm  */
     606        .long local_label(misc_set_invalid) /* 6c odd_fixnum  */
     607        .long local_label(misc_set_invalid) /* 6d tra  */
     608        .long local_label(misc_set_invalid) /* 6e misc  */
     609        .long local_label(misc_set_invalid) /* 6f immheader  */
     610        /* 70-7f  */
     611        .long local_label(misc_set_invalid) /* 70 even_fixnum  */
     612        .long local_label(misc_set_invalid) /* 71 cons  */
     613        .long _SPgvset /* 72 instance  */
     614        .long local_label(misc_set_invalid) /* 73 imm  */
     615        .long local_label(misc_set_invalid) /* 74 odd_fixnum  */
     616        .long local_label(misc_set_invalid) /* 75 tra  */
     617        .long local_label(misc_set_invalid) /* 76 misc  */
     618        .long local_label(misc_set_invalid) /* 77 immheader  */
     619        .long local_label(misc_set_invalid) /* 78 even_fixnum  */
     620        .long local_label(misc_set_invalid) /* 79 cons  */
     621        .long _SPgvset /* 7a struct  */
     622        .long local_label(misc_set_invalid) /* 7b imm  */
     623        .long local_label(misc_set_invalid) /* 7c odd_fixnum  */
     624        .long local_label(misc_set_invalid) /* 7d tra  */
     625        .long local_label(misc_set_invalid) /* 7e misc  */
     626        .long local_label(misc_set_invalid) /* 7f immheader  */
     627        /* 80-8f  */
     628        .long local_label(misc_set_invalid) /* 80 even_fixnum  */
     629        .long local_label(misc_set_invalid) /* 81 cons  */
     630        .long _SPgvset /* 82 istruct  */
     631        .long local_label(misc_set_invalid) /* 83 imm  */
     632        .long local_label(misc_set_invalid) /* 84 odd_fixnum  */
     633        .long local_label(misc_set_invalid) /* 85 tra  */
     634        .long local_label(misc_set_invalid) /* 86 misc  */
     635        .long local_label(misc_set_invalid) /* 87 immheader  */
     636        .long local_label(misc_set_invalid) /* 88 even_fixnum  */
     637        .long local_label(misc_set_invalid) /* 89 cons  */
     638        .long _SPgvset /* 8a value_cell  */
     639        .long local_label(misc_set_invalid) /* 8b imm  */
     640        .long local_label(misc_set_invalid) /* 8c odd_fixnum  */
     641        .long local_label(misc_set_invalid) /* 8d tra  */
     642        .long local_label(misc_set_invalid) /* 8e misc  */
     643        .long local_label(misc_set_invalid) /* 8f immheader  */
     644        /* 90-9f  */
     645        .long local_label(misc_set_invalid) /* 90 even_fixnum  */
     646        .long local_label(misc_set_invalid) /* 91 cons  */
     647        .long _SPgvset /* 92 xfunction  */
     648        .long local_label(misc_set_invalid) /* 93 imm  */
     649        .long local_label(misc_set_invalid) /* 94 odd_fixnum  */
     650        .long local_label(misc_set_invalid) /* 95 tra  */
     651        .long local_label(misc_set_invalid) /* 96 misc  */
     652        .long local_label(misc_set_invalid) /* 97 immheader  */
     653        .long local_label(misc_set_invalid) /* 98 even_fixnum  */
     654        .long local_label(misc_set_invalid) /* 99 cons  */
     655        .long _SPgvset /* 9a arrayH  */
     656        .long local_label(misc_set_invalid) /* 9b imm  */
     657        .long local_label(misc_set_invalid) /* 9c odd_fixnum  */
     658        .long local_label(misc_set_invalid) /* 9d tra  */
     659        .long local_label(misc_set_invalid) /* 9e misc  */
     660        .long local_label(misc_set_invalid) /* 9f immheader  */
     661        /* a0-af  */
     662        .long local_label(misc_set_invalid) /* a0 even_fixnum  */
     663        .long local_label(misc_set_invalid) /* a1 cons  */
     664        .long _SPgvset /* a2 vectorH  */
     665        .long local_label(misc_set_invalid) /* a3 imm  */
     666        .long local_label(misc_set_invalid) /* a4 odd_fixnum  */
     667        .long local_label(misc_set_invalid) /* a5 tra  */
     668        .long local_label(misc_set_invalid) /* a6 misc  */
     669        .long local_label(misc_set_single_float_vector) /* a7 sf_vector  */
     670        .long local_label(misc_set_invalid) /* a8 even_fixnum  */
     671        .long local_label(misc_set_invalid) /* a9 cons  */
     672        .long _SPgvset /* aa simple_vector  */
     673        .long local_label(misc_set_invalid) /* ab imm  */
     674        .long local_label(misc_set_invalid) /* ac odd_fixnum  */
     675        .long local_label(misc_set_invalid) /* ad tra  */
     676        .long local_label(misc_set_invalid) /* ae misc  */
     677        .long local_label(misc_set_u32) /* af u32  */
     678        /* b0-bf  */
     679        .long local_label(misc_set_invalid) /* b0 even_fixnum  */
     680        .long local_label(misc_set_invalid) /* b1 cons  */
     681        .long local_label(misc_set_invalid) /* b2 nodeheader  */
     682        .long local_label(misc_set_invalid) /* b3 imm  */
     683        .long local_label(misc_set_invalid) /* b4 odd_fixnum  */
     684        .long local_label(misc_set_invalid) /* b5 tra  */
     685        .long local_label(misc_set_invalid) /* b6 misc  */
     686        .long local_label(misc_set_s32) /* b7 s32  */
     687        .long local_label(misc_set_invalid) /* b8 even_fixnum  */
     688        .long local_label(misc_set_invalid) /* b9 cons  */
     689        .long local_label(misc_set_invalid) /* ba nodeheader  */
     690        .long local_label(misc_set_invalid) /* bb imm  */
     691        .long local_label(misc_set_invalid) /* bc odd_fixnum  */
     692        .long local_label(misc_set_invalid) /* bd tra  */
     693        .long local_label(misc_set_invalid) /* be misc  */
     694        .long local_label(misc_set_fixnum_vector) /* bf fixnum_vector  */
     695        /* c0-cf  */
     696        .long local_label(misc_set_invalid) /* c0 even_fixnum  */
     697        .long local_label(misc_set_invalid) /* c1 cons  */
     698        .long local_label(misc_set_invalid) /* c2 nodeheader  */
     699        .long local_label(misc_set_invalid) /* c3 imm  */
     700        .long local_label(misc_set_invalid) /* c4 odd_fixnum  */
     701        .long local_label(misc_set_invalid) /* c5 tra  */
     702        .long local_label(misc_set_invalid) /* c6 misc  */
     703        .long local_label(misc_set_string) /* c7 simple_base_string  */
     704        .long local_label(misc_set_invalid) /* c8 even_fixnum  */
     705        .long local_label(misc_set_invalid) /* c9 cons  */
     706        .long local_label(misc_set_invalid) /* ca nodeheader  */
     707        .long local_label(misc_set_invalid) /* cb imm  */
     708        .long local_label(misc_set_invalid) /* cc odd_fixnum  */
     709        .long local_label(misc_set_invalid) /* cd tra  */
     710        .long local_label(misc_set_invalid) /* ce misc  */
     711        .long local_label(misc_set_u8) /* cf u8  */
     712        /* d0-df  */
     713        .long local_label(misc_set_invalid) /* d0 even_fixnum  */
     714        .long local_label(misc_set_invalid) /* d1 cons  */
     715        .long local_label(misc_set_invalid) /* d2 nodeheader  */
     716        .long local_label(misc_set_invalid) /* d3 imm  */
     717        .long local_label(misc_set_invalid) /* d4 odd_fixnum  */
     718        .long local_label(misc_set_invalid) /* d5 tra  */
     719        .long local_label(misc_set_invalid) /* d6 misc  */
     720        .long local_label(misc_set_s8)      /* d7 s8  */
     721        .long local_label(misc_set_invalid) /* d8 even_fixnum  */
     722        .long local_label(misc_set_invalid) /* d9 cons  */
     723        .long local_label(misc_set_invalid) /* da nodeheader  */
     724        .long local_label(misc_set_invalid) /* db imm  */
     725        .long local_label(misc_set_invalid) /* dc odd_fixnum  */
     726        .long local_label(misc_set_invalid) /* dd tra  */
     727        .long local_label(misc_set_invalid) /* de misc  */
     728        .long local_label(misc_set_invalid) /* df immheader  */
     729        /* e0-ef  */
     730        .long local_label(misc_set_invalid) /* e0 even_fixnum  */
     731        .long local_label(misc_set_invalid) /* e1 cons  */
     732        .long local_label(misc_set_invalid) /* e2 nodeheader  */
     733        .long local_label(misc_set_invalid) /* e3 imm  */
     734        .long local_label(misc_set_invalid) /* e4 odd_fixnum  */
     735        .long local_label(misc_set_invalid) /* e5 tra  */
     736        .long local_label(misc_set_invalid) /* e6 misc  */
     737        .long local_label(misc_set_u16) /* e7 u16  */
     738        .long local_label(misc_set_invalid) /* e8 even_fixnum  */
     739        .long local_label(misc_set_invalid) /* e9 cons  */
     740        .long local_label(misc_set_invalid) /* ea nodeheader  */
     741        .long local_label(misc_set_invalid) /* eb imm  */
     742        .long local_label(misc_set_invalid) /* ec odd_fixnum  */
     743        .long local_label(misc_set_invalid) /* ed tra  */
     744        .long local_label(misc_set_invalid) /* ee misc  */
     745        .long local_label(misc_set_s16) /* ef s16  */
     746        /* f0-ff  */
     747        .long local_label(misc_set_invalid) /* f0 even_fixnum  */
     748        .long local_label(misc_set_invalid) /* f1 cons  */
     749        .long local_label(misc_set_invalid) /* f2 nodeheader  */
     750        .long local_label(misc_set_invalid) /* f3 imm  */
     751        .long local_label(misc_set_invalid) /* f4 odd_fixnum  */
     752        .long local_label(misc_set_invalid) /* f5 tra  */
     753        .long local_label(misc_set_invalid) /* f6 misc  */
     754        .long local_label(misc_set_double_float_vector) /* f7 df vector  */
     755        .long local_label(misc_set_invalid) /* f8 even_fixnum  */
     756        .long local_label(misc_set_invalid) /* f9 cons  */
     757        .long local_label(misc_set_invalid) /* fa nodeheader  */
     758        .long local_label(misc_set_invalid) /* fb imm  */
     759        .long local_label(misc_set_invalid) /* fc odd_fixnum  */
     760        .long local_label(misc_set_invalid) /* fd tra  */
     761        .long local_label(misc_set_invalid) /* fe misc  */
     762        .long local_label(misc_set_bit_vector) /* ff bit_vector  */
     763
     764local_label(misc_set_function):
     765        /* Functions are funny: the first N words are treated as */
     766        /* (UNSIGNED-BYTE 32), where N is the low 16 bits of the first word. */
     767        __(movzwl misc_data_offset(%temp0),%imm0)
     768        __(shl $fixnumshift,%imm0)
     769        __(rcmpl(%arg_y,%imm0))
     770        __(jae _SPgvset)
     771local_label(misc_set_u32):
     772        /* Either a non-negative fixnum, a positive one-digit bignum, or */
     773        /* a two-digit bignum whose sign-digit is 0 is OK. */
     774        __(movl $~(target_most_positive_fixnum <<fixnumshift),%imm0)
     775        __(test %arg_z,%imm0)
     776        __(movl %arg_z,%imm0)
     777        __(jne 1f)
     778        __(sarl $fixnumshift,%imm0)
     779        __(jmp 9f)
     7801:      __(andb $tagmask,%imm0_b)
     781        __(cmpb $tag_misc,%imm0_b)
     782        __(jne local_label(misc_set_bad))
     783        __(movb misc_subtag_offset(%arg_z),%imm0_b)
     784        __(cmpb $subtag_bignum,%imm0_b)
     785        __(jne local_label(misc_set_bad))
     786        __(movl misc_header_offset(%arg_z),%imm0)
     787        __(cmpl $two_digit_bignum_header,%imm0)
     788        __(je 3f)
     789        __(cmpl $one_digit_bignum_header,%imm0)
     790        __(jne local_label(misc_set_bad))
     791        __(movl misc_data_offset(%arg_z),%imm0)
     792        __(testl %imm0,%imm0)
     793        __(js local_label(misc_set_bad))
     794        __(jmp 9f)
     7953:      __(movl misc_data_offset(%arg_z),%imm0)
     796        __(cmpl $0,misc_data_offset+4(%arg_z))
     797        __(jne local_label(misc_set_bad))
     7989:      __(movl %imm0,misc_data_offset(%temp0,%arg_y))
     799        __(ret)
     800local_label(misc_set_s32):
     801        __(unbox_fixnum(%arg_z,%imm0))
     802        __(testb $fixnummask,%arg_z_b)
     803        __(je 9f)
     8041:      __(movb %arg_z_b,%imm0_b)
     805        __(andb $tagmask,%imm0_b)
     806        __(cmpb $tag_misc,%imm0_b)
     807        __(jne local_label(misc_set_bad))
     808        __(movl misc_header_offset(%arg_z),%imm0)
     809        __(cmpl $one_digit_bignum_header,%imm0)
     810        __(jne local_label(misc_set_bad))
     811        __(movl misc_data_offset(%arg_z),%imm0)
     8129:      __(movl %imm0,misc_data_offset(%temp0,%arg_y))
     813        __(ret)
     814local_label(misc_set_bad):
     815        __(movl %arg_z,%arg_y)
     816        __(movl %temp0,%arg_z)
     817        __(push $reserved_frame_marker)
     818        __(push $reserved_frame_marker)
     819        __(push $XNOTELT)
     820        __(set_nargs(3))
     821        __(jmp _SPksignalerr)
     822local_label(misc_set_single_float_vector):
     823        __(extract_lisptag(%arg_z,%imm0))
     824        __(cmpb $tag_misc,%imm0_b)
     825        __(jne local_label(misc_set_bad))
     826        __(movb misc_subtag_offset(%arg_z),%imm0_b)
     827        __(cmpb $subtag_single_float,%imm0_b)
     828        __(jne local_label(misc_set_bad))
     829        __(movl single_float.value(%arg_z),%imm0)
     830        __(movl %imm0,misc_data_offset(%temp0,%arg_y))
     831        __(ret)
     832local_label(misc_set_double_float_vector):
     833        __(extract_lisptag(%arg_z,%imm0))
     834        __(cmpb $tag_misc,%imm0_b)
     835        __(jne local_label(misc_set_bad))
     836        __(movb misc_subtag_offset(%arg_z),%imm0_b)
     837        __(cmpb $subtag_double_float,%imm0_b)
     838        __(jne local_label(misc_set_bad))
     839        __(movsd double_float.value(%arg_z),%fp0)
     840        __(movsd %fp0,misc_dfloat_offset(%temp0,%arg_y))
     841        __(ret)
     842local_label(misc_set_fixnum_vector):
     843        __(unbox_fixnum(%arg_z,%imm0))
     844        __(testb $fixnummask,%arg_z_b)
     845        __(jne local_label(misc_set_bad))
     846        __(movl %imm0,misc_data_offset(%temp0,%arg_y))
     847        __(ret)
     848local_label(misc_set_u8):
     849        __(testl $~(0xff<<fixnumshift),%arg_z)
     850        __(jne local_label(misc_set_bad))
     851        __(unbox_fixnum(%arg_y,%imm0))
     852        __(movl %arg_z,%arg_y)
     853        __(shll $8-fixnumshift,%arg_z)
     854        __(movb %arg_z_bh,misc_data_offset(%temp0,%imm0))
     855        __(movl %arg_y,%arg_z)
     856        __(ret)
     857local_label(misc_set_s8):
     858        __(movl %arg_z,%imm0)
     859        __(shll $32-(8+fixnumshift),%imm0)
     860        __(sarl $32-(8+fixnumshift),%imm0)
     861        __(cmpl %arg_z,%imm0)
     862        __(jne local_label(misc_set_bad))
     863        __(testb $fixnummask,%arg_z_b)
     864        __(jne local_label(misc_set_bad))
     865        __(unbox_fixnum(%arg_y,%imm0))
     866        __(movl %arg_z,%arg_z)
     867        __(shll $8-fixnumshift,%arg_z)
     868        __(movb %arg_z_bh,misc_data_offset(%temp0,%imm0))
     869        __(movl %arg_y,%arg_z)
     870        __(ret)
     871local_label(misc_set_string):
     872        __(cmpb $subtag_character,%arg_z_b)
     873        __(jne local_label(misc_set_bad))
     874        __(movl %arg_z,%imm0)
     875        __(shrl $charcode_shift,%imm0)
     876        __(movl %imm0,misc_data_offset(%temp0,%arg_y))
     877        __(ret)
     878local_label(misc_set_u16):
     879        __(testl $~(0xffff<<fixnumshift),%arg_z)
     880        __(jne local_label(misc_set_bad))
     881        __(movl %arg_y,%imm0)
     882        __(shrl $1,%imm0)
     883        __(movl %arg_z,%arg_y)
     884        /* If there's a better way, I'd be glad to hear of it. */
     885        __(shll $8-fixnumshift,%arg_z)
     886        __(movb %arg_z_bh,misc_data_offset(%temp0,%imm0))
     887        __(xorb %arg_z_bh,%arg_z_bh)
     888        __(shrl $8,%arg_z)
     889        __(movb %arg_z_bh,misc_data_offset+1(%temp0,%imm0))
     890        __(movl %arg_y,%arg_z)
     891        __(ret)
     892local_label(misc_set_s16):
     893        __(movl %arg_z,%imm0)
     894        __(shll $32-(16+fixnumshift),%imm0)
     895        __(sarl $32-(16+fixnumshift),%imm0)
     896        __(cmpl %arg_z,%imm0)
     897        __(jne local_label(misc_set_bad))
     898        __(testb $fixnummask,%arg_z_b)
     899        __(jne local_label(misc_set_bad))
     900        __(movl %arg_y,%imm0)
     901        __(shrl $1,%imm0)
     902        __(movl %arg_z,%arg_y)
     903        /* If there's a better way, I'd be glad to hear of it. */
     904        __(shll $8-fixnumshift,%arg_z)
     905        __(movb %arg_z_bh,misc_data_offset(%temp0,%imm0))
     906        __(xorb %arg_z_bh,%arg_z_bh)
     907        __(sarl $8,%arg_z)
     908        __(movb %arg_z_bh,misc_data_offset+1(%temp0,%imm0))
     909        __(movl %arg_y,%arg_z)
     910        __(ret)
     911local_label(misc_set_bit_vector):
     912        __(testl $~fixnumone,%arg_z)
     913        __(jne local_label(misc_set_bad))
     914        __(unbox_fixnum(%arg_y,%imm0))
     915        __(testb %arg_z_b,%arg_z_b)
     916        __(je local_label(misc_set_clr_bit))
     917local_label(misc_set_set_bit):
     918        __(btsl %imm0,misc_data_offset(%temp0))
     919        __(ret)
     920local_label(misc_set_clr_bit):
     921        __(btrl %imm0,misc_data_offset(%temp0))
     922        __(ret)
     923local_label(misc_set_invalid):
     924        __(push $reserved_frame_marker)
     925        __(push $reserved_frame_marker)
     926        __(push $XSETBADVEC)
     927        __(push %temp0)
     928        __(set_nargs(4))
     929        __(jmp _SPksignalerr)
    433930_endfn(C(misc_set_common))
    434931
     
    443940
    444941_spentry(nvalret)
    445         .globl C(nvalret)                       
     942        .globl C(nvalret)
    446943C(nvalret):
    447944        __(ref_global(ret1val_addr,%temp0))
     
    501998_spentry(makes64)
    502999        __(int $3)
    503 _endsubp(makes64)       
     1000_endsubp(makes64)
    5041001
    5051002/* xxx make lisp integer out of mm0? */
     
    5121009        __(cmpl %eax,%edx)      /* upper bits just sign extension? */
    5131010        __(movd %mm1,%eax)
    514         __(je _SPmakes32)       /* yes, make a 32 bit integer */
    515         __(movl $two_digit_bignum_header,%eax)
     1011        __(jne 1f)      /* no, make a bignum */
     1012        __(mark_as_node(%edx))
     1013        __(jmp _SPmakes32)
     10141:      __(movl $two_digit_bignum_header,%eax)
    5161015        __(movd %eax,%mm0)
    5171016        __(Misc_Alloc_Fixed(%arg_z,aligned_bignum_size(2)))
     
    5671066        __(int $3)
    5681067_endsubp(mkunwind)
    569        
     1068
    5701069/* this takes a return address in %ra0; it's "new" in that it does the */
    5711070/*   double binding of *interrupt-level* out-of-line */
     
    6011100/* save the single value and the throw count in the tstack frame.  */
    6021101/* Note that this takes a single value in arg_z.  */
    603        
     1102
    6041103_spentry(nthrow1value)
    6051104        __(movb $1,%rcontext:tcr.unwinding)
     
    6851184/* This never affects the symbol's vcell   */
    6861185/* Non-null symbol in arg_y, new value in arg_z           */
    687        
     1186
    6881187_spentry(bind)
    6891188        __(int $3)
     
    6911190
    6921191/* arg_z = symbol: bind it to its current value  */
    693        
     1192
    6941193_spentry(bind_self)
    6951194        __(int $3)
     
    7101209/* do list*: last arg in arg_z, all others pushed, nargs set to #args pushed.  */
    7111210/* Cons, one cons cell at at time.  Maybe optimize this later.  */
    712        
     1211
    7131212_spentry(conslist_star)
    7141213        __(int $3)
     
    7231222/* do list*: last arg in arg_z, all others vpushed,   */
    7241223/*      nargs set to #args vpushed.  */
    725        
     1224
    7261225_spentry(stkconslist_star)
    7271226        __(int $3)
     
    7311230/* Make a stack-consed simple-vector out of the NARGS objects   */
    7321231/*      on top of the vstack; return it in arg_z.  */
    733        
     1232
    7341233_spentry(mkstackv)
    7351234        __(int $3)
     
    7651264        .globl C(egc_rplacd)
    7661265C(egc_rplacd):
    767         __(int $3)
     1266        __(rcmpl(%arg_z,%arg_y))
     1267        __(_rplacd(%arg_y,%arg_z))
     1268        __(ja 1f)
     12690:      __(repret)
     12701:      __(movl %arg_y,%imm0)
     1271        __(subl lisp_global(heap_start),%imm0)
     1272        __(shrl $dnode_shift,%imm0)
     1273        __(cmpl lisp_global(oldspace_dnode_count),%imm0)
     1274        __(jae 0b)
     1275        __(andl $~(1<<bitmap_shift-1),%temp0)
     1276        __(shrl $bitmap_shift-fixnumshift,%temp0)
     1277        __(andl $31,%imm0)
     1278        __(addl lisp_global(refbits),%temp0)
     1279        __(xorb $31,%imm0_b)
     1280        __(lock)
     1281        __(btsl %imm0,(%temp0))
     1282        __(ret)
    7681283_endsubp(rplacd)
    7691284
     
    7941309_spentry(set_hash_key)
    7951310        .globl C(egc_set_hash_key)
    796 C(egc_set_hash_key): 
     1311C(egc_set_hash_key):
    7971312        __(int $3)
    7981313_endsubp(set_hash_key)
     
    8001315/* This is a little trickier: if this is interrupted, we need to know  */
    8011316/* whether or not the STORE-CONDITIONAL (cmpxchgq) has won or not.    */
    802 /* If we're interrupted   before the PC has reached the "success_test" label,   */
    803 /* repeat (luser the PC back to .SPstore_node_conditional.)  If we're at that  */
     1317/* If we're interrupted   before the PC has reached the "success_test" label, */
     1318/* repeat (luser the PC back to .SPstore_node_conditional.)  If we're at that */
    8041319/* label with the Z flag set, we won and (may) need to memoize.  */
    8051320
     1321/* %temp0 = offset, %temp1 = object, %arg_y = old, %arg_z = new */
    8061322_spentry(store_node_conditional)
    8071323        .globl C(egc_store_node_conditional)
    8081324C(egc_store_node_conditional):
     1325        __(unbox_fixnum(%temp0,%imm0))
     13260:      __(movl (%temp1,%imm0),%temp0)
     1327        __(cmpl %arg_y,%temp1)
     1328        __(movl %temp0,%imm0)
     1329        __(jne 3f)
     1330        __(lock)
     1331        __(cmpxchgl %arg_z,(%temp1,%imm0))
    8091332        .globl C(egc_store_node_conditional_success_test)
    8101333C(egc_store_node_conditional_success_test):
     1334        __(jne 0b)
     1335        __(leal (%temp1,%imm0),%imm0)
     1336        __(subl lisp_global(heap_start),%imm0)
     1337        __(shrl $dnode_shift,%imm0)
     1338        __(cmpl lisp_global(oldspace_dnode_count),%imm0)
     1339        __(jae 2f)
     1340        __(andl $~(1<<bitmap_shift-1),%temp0)
     1341        __(shrl $bitmap_shift-fixnumshift,%temp0)
     1342        __(andl $31,%imm0)
     1343        __(addl lisp_global(refbits),%temp0)
     1344        __(xorb $31,%imm0_b)
     1345        __(lock)
     1346        __(btsl %imm0,(%temp0))
    8111347        .globl C(egc_write_barrier_end)
    8121348C(egc_write_barrier_end):
    813         __(int $3)
     13492:      __(movl $t_value,%arg_z)
     1350        __(ret)
     13513:      __(movl $nil_value,%arg_z)
     1352        __(ret)
    8141353_endsubp(store_node_conditional)
    8151354
     
    8301369/* stack. (The caller has to know which stack to discard a frame from.)  */
    8311370/* %arg_y = boxed element-count, %arg_z = boxed subtype  */
    832        
     1371
    8331372_spentry(stack_misc_alloc)
    8341373        __(testl $~(((1<<24)-1)<<fixnumshift),%arg_y)
     
    9031442        __(TSP_Alloc_Fixed(0,%imm0))
    9041443        __(jmp _SPmisc_alloc)
    905        
     1444
    9061445local_label(stack_misc_alloc_not_u24):
    9071446        __(uuo_error_reg_not_type(Rarg_y,error_object_not_unsigned_byte_24))
     
    9451484        __(int $3)
    9461485_endsubp(values)
    947        
     1486
    9481487_spentry(default_optional_args)
    9491488        __(int $3)
     
    9571496        __(int $3)
    9581497_endsubp(lexpr_entry)
    959        
     1498
    9601499_spentry(heap_rest_arg)
    9611500        __(int $3)
    9621501_endsubp(heap_rest_arg)
    963        
     1502
    9641503/* %imm0 contains the number of fixed args ; make an &rest arg out of the others   */
    9651504_spentry(req_heap_rest_arg)
     
    9831522        __(jmp _SPkeyword_bind)
    9841523_endsubp(keyword_args)
    985        
     1524
    9861525/* There are %nargs words of arguments on the stack; %imm0 contains the */
    9871526/* number of non-keyword args pushed.  It's possible that we never actually */
     
    10001539define([keyword_flags_rest_bit],[18])
    10011540define([keyword_flags_seen_aok_bit],[19])
    1002        
     1541
    10031542_spentry(keyword_bind)
    10041543        __(movzwl %nargs_w,%arg_z)
     
    10561595        __(push %imm0)          /* count of declared keywords */
    10571596        __(push %arg_z)         /* count of supplied keys and values */
    1058        
     1597
    10591598        /* For each declared keyword, iterate over the supplied k/v pairs */
    10601599        /* to see if it's supplied and what the value is. */
     
    11661705        __(jmp _SPksignalerr)
    116717069:      __(jmp *%ra0)
    1168        
     1707
    11691708/* No keyword value were provided.  Access the keyword vector (which is the */
    11701709/* 0th constant in %fn), determine its length N, and push N pairs of NILs. */
     
    12251764_endsubp(spreadargz)
    12261765
    1227        
     1766
    12281767/* Caller built it's own frame when it was entered.  If all outgoing args  */
    12291768/* are in registers, we can discard that frame; otherwise, we copy outgoing  */
     
    12831822        __(int $3)
    12841823_endsubp(tcallnfngen)
    1285        
     1824
    12861825_spentry(tcallnfnslide)
    12871826        __(int $3)
     
    13211860        __(jump_fname())
    13221861_endsubp(makestackblock)
    1323        
     1862
    13241863_spentry(makestackblock0)
    13251864        __(int $3)
    13261865_endsubp(makestackblock0)
    1327        
     1866
    13281867_spentry(makestacklist)
    13291868        __(int $3)
    13301869_endsubp(makestacklist)
    1331        
     1870
    13321871_spentry(stkgvector)
    13331872        __(int $3)
     
    13831922_startfn(C(destbind1))
    13841923        __(jmp *%ra0)
    1385 _endfn(C(destbind1))   
     1924_endfn(C(destbind1))
    13861925
    13871926_spentry(macro_bind)
     
    14301969        __(int $3)
    14311970_endsubp(add_values)
    1432                                        
     1971
    14331972_spentry(recover_values)
    14341973        __(int $3)
    14351974_endsubp(recover_values)
    1436                                        
     1975
    14371976_spentry(recover_values_for_mvcall)
    14381977        __(int $3)
    14391978_endsubp(recover_values_for_mvcall)
    1440                                        
     1979
    14411980_spentry(reset)
    14421981        __(int $3)
    14431982_endsubp(reset)
    14441983
     1984/* temp0 = element-count, arg_y = subtag, arg_z = initval */
    14451985_spentry(misc_alloc_init)
    1446         __(int $3)
     1986        __(push %ebp)
     1987        __(movl %esp,%ebp)
     1988        __(push %arg_z)
     1989        __(movl %arg_y,%arg_z)
     1990        __(movl %temp0,%arg_y)
     1991        __(push $local_label(misc_alloc_init_back))
     1992        __(jmp _SPmisc_alloc)
     1993__(tra(local_label(misc_alloc_init_back)))
     1994        __(pop %arg_y)
     1995        __(leave)
     1996        __(movl $nrs.init_misc,%fname)
     1997        __(set_nargs(2))
     1998        __(jump_fname())
    14471999_endsubp(misc_alloc_init)
    1448        
     2000
    14492001_spentry(stack_misc_alloc_init)
    14502002        __(int $3)
     
    14622014        __(int $3)
    14632015_endsubp(gets64)
    1464        
    1465        
     2016
     2017
    14662018/* arg_z should be of type (unsigned-byte 64) */
    14672019/* return unboxed value in mm0 */
     
    15212073        __(jmp _SPgvset)
    15222074_endsubp(specset)
    1523        
     2075
    15242076_spentry(specrefcheck)
    15252077        __(mov %arg_z,%arg_y)
     
    15352087        __(jne,pt 9f)
    15362088        __(uuo_error_reg_unbound(Rarg_y))
    1537 9:      __(repret)             
     20899:      __(repret)
    15382090_endsubp(specrefcheck)
    15392091
     
    16742226        __(testb $fixnummask,%imm0_b)
    16752227        __(jne 1f)
    1676         __(xchgl %arg_y,%arg_z) 
     2228        __(xchgl %arg_y,%arg_z)
    16772229        __(subl %arg_y,%arg_z)
    16782230        __(jo,pn C(fix_one_bit_overflow))
     
    171922711:      __(jump_builtin(_builtin_eq,2))
    17202272_endsubp(builtin_eq)
    1721        
     2273
    17222274/* %arg_z <- (/= %arg_y %arg_z).          */
    17232275_spentry(builtin_ne)
     
    173122831:      __(jump_builtin(_builtin_ne,2))
    17322284_endsubp(builtin_ne)
    1733        
     2285
    17342286/* %arg_z <- (> %arg_y %arg_z).   */
    17352287_spentry(builtin_gt)
     
    175523071:      __(jump_builtin(_builtin_ge,2))
    17562308_endsubp(builtin_ge)
    1757        
     2309
    17582310/* %arg_z <- (< %arg_y %arg_z).   */
    17592311_spentry(builtin_lt)
     
    17812333
    17822334_spentry(builtin_eql)
    1783         __(int $3)
     2335        __(cmpl %arg_y,%arg_z)
     2336        __(je 1f)
     2337        /* Not EQ.  Could only possibly be EQL if both are tag-misc  */
     2338        /* and both have the same subtag. */
     2339        __(movl %arg_y,%imm0)
     2340        __(andb $tagmask,%imm0_b)
     2341        __(cmpb $tag_misc,%imm0_b)
     2342        __(jne 2f)
     2343        __(movl %arg_z,%imm0)
     2344        __(andb $tagmask,%imm0_b)
     2345        __(jne 2f)
     2346        __(extract_subtag(%arg_y,%imm0_b))
     2347        __(extract_subtag(%arg_z,%imm0_bh))
     2348        __(cmpb %imm0_b,%imm0_bh)
     2349        __(jne 2f)
     2350        __(jump_builtin(_builtin_eql,2))
     23511:      __(movl $t_value,%arg_z)
     2352        __(ret)
     23532:      __(movl $nil_value,%arg_z)
     2354        __(ret)
    17842355_endsubp(builtin_eql)
    17852356
     
    18552426        __(orl %arg_y,%arg_z)
    18562427        __(ret)
    1857 1:     
     24281:
    18582429        __(jump_builtin(_builtin_logior,2))
    18592430_endsubp(builtin_logior)
     
    18662437        __(andl %arg_y,%arg_z)
    18672438        __(ret)
    1868 1:             
     24391:
    18692440        __(jump_builtin(_builtin_logand,2))
    18702441_endsubp(builtin_logand)
     
    18762447        __(jo,pn C(fix_one_bit_overflow))
    18772448        __(repret)
    1878 1:             
    1879         __(jump_builtin(_builtin_negate,1))     
     24491:
     2450        __(jump_builtin(_builtin_negate,1))
    18802451_endsubp(builtin_negate)
    18812452
     
    18872458        __(xorl %arg_y,%arg_z)
    18882459        __(ret)
    1889 1:             
     24601:
    18902461        __(jump_builtin(_builtin_logxor,2))
    18912462_endsubp(builtin_logxor)
    1892        
     2463
    18932464_spentry(builtin_aset1)
    18942465        __(int $3)
     
    18962467
    18972468_spentry(builtin_ash)
    1898         __(int $3)
     2469        __(movl %arg_y,%imm0)
     2470        __(orb %arg_z_b,%imm0_b)
     2471        __(testb $fixnummask,%imm0_b)
     2472        __(jne 9f)
     2473        __(unbox_fixnum(%arg_z,%imm0))
     2474        /* Z flag set if zero ASH shift count */
     2475        __(jnz 1f)
     2476        __(movl %arg_y,%arg_z) /* shift by 0 */
     2477        __(ret)
     24781:      __(jns 3f)
     2479        __(rcmpl(%imm0,$-31))
     2480        __(jg 2f)
     2481        __(unbox_fixnum(%arg_y,%imm0))
     2482        __(sar $31,%imm0)
     2483        __(box_fixnum(%imm0,%arg_z))
     2484        __(ret)
     24852:      /* Right-shift by small fixnum */
     2486        __(negb %imm0_b)
     2487        __(movzbl %imm0_b,%ecx)
     2488        __(unbox_fixnum(%arg_y,%imm0))
     2489        __(sar %cl,%imm0)
     2490        __(box_fixnum(%imm0,%arg_z))
     2491        __(ret)
     24923:      /* Left shift by fixnum.  We can't shift by more than 31 bits, */
     2493        /* though shifting by 32 is actually easy. */
     2494        __(rcmpl(%imm0,$32))
     2495        __(jg 9f)
     2496        __(jne 4f)
     2497        /* left-shift by 32 bits exactly */
     2498        __(mark_as_imm(%edx)) /* aka temp1 (makes64 will undo this) */
     2499        __(unbox_fixnum(%arg_y,%edx))
     2500        __(xorl %imm0,%imm0)
     2501        __(jmp C(makes64))
     25024:      /* left-shift by 1..31 bits. Safe to move shift count to %cl */
     2503        __(movzbl %imm0_b,%ecx)
     2504        __(unbox_fixnum(%arg_y,%imm0))
     2505        __(mark_as_imm(%edx)) /* aka temp1 (makes64 will undo this) */
     2506        __(movl %imm0,%edx)
     2507        __(sarl $31,%edx)       /* propagate sign */
     2508        __(shld %cl,%imm0,%edx)
     2509        __(shl %cl,%imm0)
     2510        __(jmp C(makes64))
     25119:
     2512        __(jump_builtin(_builtin_ash,2))
    18992513_endsubp(builtin_ash)
    19002514
     
    20102624        __(int $3)
    20112625_endsubp(poweropen_callbackX)
    2012        
     2626
    20132627_spentry(poweropen_ffcallX)
    20142628        __(int $3)
    20152629_endsubp(poweropen_ffcallX)
    2016                
     2630
    20172631_spentry(poweropen_syscall)
    20182632        __(int $3)
     
    20482662        __(int $3)
    20492663_endsubp(callbuiltin3)
    2050        
     2664
    20512665_spentry(restorefullcontext)
    20522666        __(int $3)
Note: See TracChangeset for help on using the changeset viewer.