提交 344480b9 编写于 作者: P Paul Mackerras

powerpc: Fix a corner case in __div64_32

The code was incorrectly doing a division by 0 in the case where
the denominator was 0x100000000 and the divisor was 0xffffffff.
Thanks to Fred Liu of Motorola for pointing this out.
Signed-off-by: NPaul Mackerras <paulus@samba.org>
上级 a4bcc95a
...@@ -33,9 +33,10 @@ _GLOBAL(__div64_32) ...@@ -33,9 +33,10 @@ _GLOBAL(__div64_32)
cntlzw r0,r5 # we are shifting the dividend right cntlzw r0,r5 # we are shifting the dividend right
li r10,-1 # to make it < 2^32, and shifting li r10,-1 # to make it < 2^32, and shifting
srw r10,r10,r0 # the divisor right the same amount, srw r10,r10,r0 # the divisor right the same amount,
add r9,r4,r10 # rounding up (so the estimate cannot addc r9,r4,r10 # rounding up (so the estimate cannot
andc r11,r6,r10 # ever be too large, only too small) andc r11,r6,r10 # ever be too large, only too small)
andc r9,r9,r10 andc r9,r9,r10
addze r9,r9
or r11,r5,r11 or r11,r5,r11
rotlw r9,r9,r0 rotlw r9,r9,r0
rotlw r11,r11,r0 rotlw r11,r11,r0
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册