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