Ticket #894: ccl-arm-get64.diff

File ccl-arm-get64.diff, 1.5 KB (added by ivan4th, 2 years ago)
  • arm-spentry.s

     
    21752175        __(extract_typecode(imm0,arg_z)) 
    21762176        __(cmp imm0,#subtag_bignum) 
    21772177        __(bne 0b) 
    2178         __(movc16(imm1,two_digit_bignum_header)) 
     2178        __(movc16(imm1,one_digit_bignum_header)) 
    21792179        __(getvheader(imm0,arg_z)) 
    21802180        __(cmp imm0,imm1) 
    2181         __(bne 2f) 
     2181        __(ldreq imm0,[arg_z,#misc_data_offset]) 
     2182        __(moveq imm1,#0) 
     2183        __(bxeq lr) 
     21842:      __(movc16(imm1,two_digit_bignum_header)) 
     2185        __(cmp imm0,imm1) 
     2186        __(bne 3f) 
    21822187        __(vrefr(imm0,arg_z,0)) 
    21832188        __(vrefr(imm1,arg_z,1)) 
    21842189        __(cmp imm1,#0) 
    21852190        __(bxge lr) 
    21862191        __(uuo_error_reg_not_xtype(al,arg_z,xtype_u64)) 
    2187 2:      __(movc16(imm1,three_digit_bignum_header)) 
     21923:      __(movc16(imm1,three_digit_bignum_header)) 
    21882193        __(cmp imm0,imm1) 
    21892194        __(uuo_error_reg_not_xtype(ne,arg_z,xtype_u64)) 
    21902195        __(vrefr(imm2,arg_z,2)) 
     
    22072212        __(extract_lisptag(imm0,arg_z)) 
    22082213        __(cmp imm0,#tag_misc) 
    22092214        __(ldreq imm2,[arg_z,#misc_header_offset]) 
     2215        __(movc16(imm1,one_digit_bignum_header)) 
     2216        __(cmp imm1,imm2) 
     2217        __(ldreq imm0,[arg_z,#misc_data_offset]) 
     2218        __(moveq imm1,imm0,asr #31) 
     2219        __(bxeq lr)         
    22102220        __(movc16(imm1,two_digit_bignum_header)) 
    22112221        __(cmp imm1,imm2) 
    22122222        __(beq 1f)