Index: ChangeLog.bfin =================================================================== RCS file: /cvsroot/gcc3/gcc-3.4/gcc/ChangeLog.bfin,v retrieving revision 1.189 diff -d -u -r1.189 ChangeLog.bfin --- ChangeLog.bfin 5 Apr 2006 19:31:36 -0000 1.189 +++ ChangeLog.bfin 5 Apr 2006 21:55:35 -0000 @@ -3,6 +3,9 @@ * config/bfin/bfin.c (bfin_legitimate_address_p): Disallow got-relative addressing for anything but SImode. + * config/bfin/lib1funcs.asm (modsi): P1/P2 can be call-clobbered + even if the calling function doesn't modify them. + 2006-04-04 Bernd Schmidt * config/bfin/bfin.md (neghi2): Set correct type. Index: config/bfin/lib1funcs.asm =================================================================== RCS file: /cvsroot/gcc3/gcc-3.4/gcc/config/bfin/lib1funcs.asm,v retrieving revision 1.7 diff -d -u -r1.7 lib1funcs.asm --- config/bfin/lib1funcs.asm 12 Mar 2006 22:40:20 -0000 1.7 +++ config/bfin/lib1funcs.asm 5 Apr 2006 21:55:35 -0000 @@ -43,12 +43,11 @@ ___modsi3: __modsi3: [--SP] = RETS; - /* P1 and P2 are preserved by divsi3 and udivsi3. */ - P1 = R0; - P2 = R1; + [--SP] = R0; + [--SP] = R1; CALL ___divsi3; - R1 = P1; - R2 = P2; + R2 = [SP++]; + R1 = [SP++]; R2 *= R0; R0 = R1 - R2; RETS = [SP++];