aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorBruce Evans <bde@FreeBSD.org>1998-07-29 18:48:20 +0000
committerBruce Evans <bde@FreeBSD.org>1998-07-29 18:48:20 +0000
commit7010319f164b728a655121ca8e2583df0a4bc1bc (patch)
treee4567a4aee63580332320daccbb570e962474c32 /sys/dev
parent8a8a13c8f06952208c52c0ab8fc211fa5f10f04f (diff)
downloadsrc-7010319f164b728a655121ca8e2583df0a4bc1bc.tar.gz
src-7010319f164b728a655121ca8e2583df0a4bc1bc.zip
Fixed sign extension bugs awoken by changing speed_t to an unsigned
type. 19200, 1200 and other relatively uninteresting speeds were broken. Submitted by: Rob Mallory <rmallory@qualcomm.com>
Notes
Notes: svn path=/head/; revision=37959
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/cy/cy.c6
-rw-r--r--sys/dev/cy/cy_isa.c6
2 files changed, 8 insertions, 4 deletions
diff --git a/sys/dev/cy/cy.c b/sys/dev/cy/cy.c
index 7ddfbc000775..38bac420bc58 100644
--- a/sys/dev/cy/cy.c
+++ b/sys/dev/cy/cy.c
@@ -27,7 +27,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: cy.c,v 1.63 1998/06/07 17:10:16 dfr Exp $
+ * $Id: cy.c,v 1.64 1998/07/15 12:18:12 bde Exp $
*/
#include "opt_compat.h"
@@ -2482,7 +2482,9 @@ comspeed(speed, prescaler_io)
if (divider > 255)
divider = 255;
actual = CY_CLOCK/prescaler/divider;
- error = ((actual - speed) * 2000 / speed + 1) / 2; /* percentage */
+
+ /* 10 times error in percent: */
+ error = ((actual - (long)speed) * 2000 / (long)speed + 1) / 2;
/* 3.0% max error tolerance */
if (error < -30 || error > 30)
diff --git a/sys/dev/cy/cy_isa.c b/sys/dev/cy/cy_isa.c
index 7ddfbc000775..38bac420bc58 100644
--- a/sys/dev/cy/cy_isa.c
+++ b/sys/dev/cy/cy_isa.c
@@ -27,7 +27,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: cy.c,v 1.63 1998/06/07 17:10:16 dfr Exp $
+ * $Id: cy.c,v 1.64 1998/07/15 12:18:12 bde Exp $
*/
#include "opt_compat.h"
@@ -2482,7 +2482,9 @@ comspeed(speed, prescaler_io)
if (divider > 255)
divider = 255;
actual = CY_CLOCK/prescaler/divider;
- error = ((actual - speed) * 2000 / speed + 1) / 2; /* percentage */
+
+ /* 10 times error in percent: */
+ error = ((actual - (long)speed) * 2000 / (long)speed + 1) / 2;
/* 3.0% max error tolerance */
if (error < -30 || error > 30)