diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b7a2f5d09ff45978dcd4af14fdadd9285fbdc309..732d78da1f3b5af3f4a11711a8610597ba4f3ea6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-03-13  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+	* config/bfin/lib1funcs.asm (___umodsi3): Use stack to save contents
+	of RETS.
+
 2006-03-13  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR middle-end/18859
diff --git a/gcc/config/bfin/lib1funcs.asm b/gcc/config/bfin/lib1funcs.asm
index ee06d462736cf7b876fa7a528fc78861c1dfcbd6..22e8a02a33ade707ed6eb57a6df2e74c1d51ef69 100644
--- a/gcc/config/bfin/lib1funcs.asm
+++ b/gcc/config/bfin/lib1funcs.asm
@@ -111,10 +111,10 @@ ___udivsi3:
 .type ___umodsi3, STT_FUNC;
 
 ___umodsi3:
-        P1 = RETS;
-        CALL ___udivsi3;
+	[--SP] = RETS;
+	CALL ___udivsi3;
 	R0 = R3;
-	RETS = P1; 
-        RTS;
+	RETS = [SP++]; 
+	RTS;
 #endif