diff options
author | Bruce Evans <bde@FreeBSD.org> | 1998-07-29 18:48:20 +0000 |
---|---|---|
committer | Bruce Evans <bde@FreeBSD.org> | 1998-07-29 18:48:20 +0000 |
commit | 7010319f164b728a655121ca8e2583df0a4bc1bc (patch) | |
tree | e4567a4aee63580332320daccbb570e962474c32 /sys/dev | |
parent | 8a8a13c8f06952208c52c0ab8fc211fa5f10f04f (diff) | |
download | src-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.c | 6 | ||||
-rw-r--r-- | sys/dev/cy/cy_isa.c | 6 |
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) |