openwrtv3/toolchain/gcc/patches/4.3.5/942-avr32_fix_32bit_div.patch
Imre Kaloz 54dea0c74f add avr32 support to gcc 4.3.5
SVN-Revision: 23865
2010-11-04 14:17:06 +00:00

34 lines
1,005 B
Diff

--- a/gcc/config/avr32/lib1funcs.S
+++ b/gcc/config/avr32/lib1funcs.S
@@ -2257,10 +2257,13 @@ __avr32_f32_div:
/* Unpack */
lsl r12,1
- reteq 0 /* Return zero if op1 is zero */
lsl r11,1
breq 4f /* Check op2 for zero */
-
+
+ tst r12, r12
+ moveq r9, 0
+ breq 12
+
/* Unpack op1*/
/* exp: r9 */
/* sf: r12 */
@@ -2279,9 +2282,14 @@ __avr32_f32_div:
breq 13f /*If number is subnormal*/
cp r10, 0xff
brhs 3f /* Check op2 for NaN or Inf */
-
lsl r11,7
sbr r11, 31 /*Implicit bit*/
+
+ cp.w r9, 0
+ subfeq r12, 0
+ reteq 0 /* op1 is zero and op2 is not zero */
+ /* or NaN so return zero */
+
14:
/* For UC3, store with predecrement is faster than stm */