From: Paul Mackerras Date: Wed, 19 Oct 2005 23:37:02 +0000 (+1000) Subject: powerpc: Fix a corner case in __div64_32 X-Git-Tag: v2.6.15-rc1~59^2~145 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=344480b99730bfd205e306d3fd168cdcebe83425;p=linux-2.6 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: Paul Mackerras --- diff --git a/arch/powerpc/lib/div64.S b/arch/powerpc/lib/div64.S index 3527569e99..83d9832fd9 100644 --- a/arch/powerpc/lib/div64.S +++ b/arch/powerpc/lib/div64.S @@ -33,9 +33,10 @@ _GLOBAL(__div64_32) cntlzw r0,r5 # we are shifting the dividend right li r10,-1 # to make it < 2^32, and shifting 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 r9,r9,r10 + addze r9,r9 or r11,r5,r11 rotlw r9,r9,r0 rotlw r11,r11,r0