3 ac0e2db6 2004-04-21 devnull .p2align 2,0x90
4 ac0e2db6 2004-04-21 devnull .globl mpdigdiv
5 ac0e2db6 2004-04-21 devnull .type mpdigdiv, @function
7 ac0e2db6 2004-04-21 devnull /* Prelude */
8 ac0e2db6 2004-04-21 devnull pushl %ebp
9 ac0e2db6 2004-04-21 devnull movl %ebx, -4(%esp) /* save on stack */
11 ac0e2db6 2004-04-21 devnull movl 8(%esp), %ebx
12 ac0e2db6 2004-04-21 devnull movl (%ebx), %eax
13 ac0e2db6 2004-04-21 devnull movl 4(%ebx), %edx
15 ac0e2db6 2004-04-21 devnull movl 12(%esp), %ebx
16 ac0e2db6 2004-04-21 devnull movl 16(%esp), %ebp
17 ac0e2db6 2004-04-21 devnull xorl %ecx, %ecx
18 ac0e2db6 2004-04-21 devnull cmpl %ebx, %edx /* dividend >= 2^32 * divisor */
19 ac0e2db6 2004-04-21 devnull jae divovfl
20 ac0e2db6 2004-04-21 devnull cmpl %ecx, %ebx /* divisor == 1 */
21 ac0e2db6 2004-04-21 devnull je divovfl
22 ac0e2db6 2004-04-21 devnull divl %ebx /* AX = DX:AX/BX */
23 ac0e2db6 2004-04-21 devnull movl %eax, (%ebp)
26 ac0e2db6 2004-04-21 devnull /* return all 1's */
28 ac0e2db6 2004-04-21 devnull notl %ecx
29 ac0e2db6 2004-04-21 devnull movl %ecx, (%ebp)
32 ac0e2db6 2004-04-21 devnull /* Postlude */
33 ac0e2db6 2004-04-21 devnull movl -4(%esp), %ebx /* restore from stack */
34 ac0e2db6 2004-04-21 devnull movl %esp, %ebp
38 ac0e2db6 2004-04-21 devnull .endmpdigdiv:
39 ac0e2db6 2004-04-21 devnull .size mpdigdiv,.endmpdigdiv-mpdigdiv