• 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 vAA, vBB, vCC */
6    .extern $routine
7    mov     rIBASE, LOCAL0(%esp)            # save rIBASE/%edx
8    mov     rINST, LOCAL1(%esp)             # save rINST/%ebx
9    movzbl  3(rPC), %eax                    # eax <- CC
10    GET_VREG %ecx, %eax
11    GET_VREG_HIGH %ebx, %eax
12    movl    %ecx, %edx
13    orl     %ebx, %ecx
14    jz      common_errDivideByZero
15    movzbl  2(rPC), %eax                    # eax <- BB
16    GET_VREG_HIGH %ecx, %eax
17    GET_VREG %eax, %eax
18    call    SYMBOL($routine)
19    mov     LOCAL1(%esp), rINST             # restore rINST/%ebx
20    SET_VREG_HIGH rIBASE, rINST
21    SET_VREG %eax, rINST
22    mov     LOCAL0(%esp), rIBASE            # restore rIBASE/%edx
23    ADVANCE_PC_FETCH_AND_GOTO_NEXT 2
24