From 680595e7c3c9fa94c2818afe1873bbb874b9039e Mon Sep 17 00:00:00 2001 From: mark Date: Fri, 17 Oct 1997 18:35:19 +0000 Subject: [PATCH] Fix extra 'S' character typo that resulted in the condition codes being incorrectly internally on certain divides. Handle the case where the internal result appears negative. This condition can occur when dividing MIN_INT by certain values. --- sys/lib/libkern/arch/arm32/divsi3.S | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sys/lib/libkern/arch/arm32/divsi3.S b/sys/lib/libkern/arch/arm32/divsi3.S index 32e3a0dac946..b68a0bf290ea 100644 --- a/sys/lib/libkern/arch/arm32/divsi3.S +++ b/sys/lib/libkern/arch/arm32/divsi3.S @@ -1,4 +1,4 @@ -/* $NetBSD: divsi3.S,v 1.1 1997/10/12 21:24:03 mark Exp $ */ +/* $NetBSD: divsi3.S,v 1.2 1997/10/17 18:35:19 mark Exp $ */ /* * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND @@ -153,7 +153,7 @@ L_divide_b29: addhs r3, r3,r2, lsl #28 L_divide_b28: cmp r1, r0, lsl #27 - subhsS r1, r1,r0, lsl #27 + subhs r1, r1,r0, lsl #27 addhs r3, r3,r2, lsl #27 L_divide_b27: cmp r1, r0, lsl #26 @@ -271,6 +271,7 @@ L_divide_b0: cmp ip, #0 rsbmi r1, r1, #0 movs ip, ip, lsl #1 + bicmi r0, r0, #0x80000000 /* Fix incase we divided 0x80000000 */ rsbmi r0, r0, #0 mov pc, lr