%default {"routine":"art_quick_ldiv"} /* art_quick_* methods has quick abi, * so use eax, ecx, edx, ebx for args */ /* div/2addr vA, vB */ .extern $routine mov rIBASE, LOCAL0(%esp) # save rIBASE/%edx movzbl rINSTbl, %eax shrl $$4, %eax # eax <- B andb $$0xf, rINSTbl # rINST <- A mov rINST, LOCAL1(%esp) # save rINST/%ebx movl %ebx, %ecx GET_VREG %edx, %eax GET_VREG_HIGH %ebx, %eax movl %edx, %eax orl %ebx, %eax jz common_errDivideByZero GET_VREG %eax, %ecx GET_VREG_HIGH %ecx, %ecx call SYMBOL($routine) mov LOCAL1(%esp), rINST # restore rINST/%ebx SET_VREG_HIGH rIBASE, rINST SET_VREG %eax, rINST mov LOCAL0(%esp), rIBASE # restore rIBASE/%edx ADVANCE_PC_FETCH_AND_GOTO_NEXT 1