• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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