Home | History | Annotate | Download | only in x86
      1 %default {"routine":"art_quick_ldiv"}
      2 /* art_quick_* methods has quick abi,
      3  *   so use eax, ecx, edx, ebx for args
      4  */
      5     /* div/2addr vA, vB */
      6     .extern   $routine
      7     mov     rIBASE, LOCAL0(%esp)            # save rIBASE/%edx
      8     movzbl  rINSTbl, %eax
      9     shrl    $$4, %eax                       # eax <- B
     10     andb    $$0xf, rINSTbl                  # rINST <- A
     11     mov     rINST, LOCAL1(%esp)             # save rINST/%ebx
     12     movl    %ebx, %ecx
     13     GET_VREG %edx, %eax
     14     GET_VREG_HIGH %ebx, %eax
     15     movl    %edx, %eax
     16     orl     %ebx, %eax
     17     jz      common_errDivideByZero
     18     GET_VREG %eax, %ecx
     19     GET_VREG_HIGH %ecx, %ecx
     20     call    SYMBOL($routine)
     21     mov     LOCAL1(%esp), rINST             # restore rINST/%ebx
     22     SET_VREG_HIGH rIBASE, rINST
     23     SET_VREG %eax, rINST
     24     mov     LOCAL0(%esp), rIBASE            # restore rIBASE/%edx
     25     ADVANCE_PC_FETCH_AND_GOTO_NEXT 1
     26