aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-06-22 18:52:32 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1995-06-22 18:52:32 -0400
commit83750c274bae76086912ab1e136e7d75f6f976b6 (patch)
tree26a30a6f034e4a1803303b71bc9a8b48fbf34f4d
parenteed0e340be7599f9da26ebda87eb9f8fdc63bd8e (diff)
downloadgcc-83750c274bae76086912ab1e136e7d75f6f976b6.zip
gcc-83750c274bae76086912ab1e136e7d75f6f976b6.tar.gz
gcc-83750c274bae76086912ab1e136e7d75f6f976b6.tar.bz2
(___modsi3): Correctly set SIGN register for modulo involving negative
numbers. From-SVN: r10029
-rw-r--r--gcc/config/arm/lib1funcs.asm5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
index 73137c0..0be7b13 100644
--- a/gcc/config/arm/lib1funcs.asm
+++ b/gcc/config/arm/lib1funcs.asm
@@ -135,7 +135,8 @@ NAME:
stmdb sp!, REGLIST lr}
ifelse(S, `true',
` @ compute sign of result; if neither is negative, no problem
- eor SIGN, divisor, dividend @ compute sign
+ ifelse(OP, `div', `eor SIGN, divisor, dividend @ compute sign',
+ `mov SIGN, dividend')
cmp divisor, #0
rsbmi divisor, divisor, #0
beq Ldiv_zero
@@ -1266,7 +1267,7 @@ pc .req r15
___modsi3:
stmdb sp!, {r4, r5, r6, lr}
@ compute sign of result; if neither is negative, no problem
- eor r6, r1, r0 @ compute sign
+ mov r6, r0
cmp r1, #0
rsbmi r1, r1, #0
beq Ldiv_zero