diff options
| author | pk <pk@NetBSD.org> | 2000-04-14 14:14:47 +0000 |
|---|---|---|
| committer | pk <pk@NetBSD.org> | 2000-04-14 14:14:47 +0000 |
| commit | cd955cb171ff62cfc789dbc1958de9c6de311f7a (patch) | |
| tree | d1e3e65f3b62b0f7ecc7037277057b2c49d4a43f | |
| parent | 017ca78459fd88a78fe99e6b927e71247d494de3 (diff) | |
dvma_init: avoid integer variable overflow
| -rw-r--r-- | sys/arch/sparc/stand/common/dvma.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/arch/sparc/stand/common/dvma.c b/sys/arch/sparc/stand/common/dvma.c index 70a850c3371..7b9c3baf12e 100644 --- a/sys/arch/sparc/stand/common/dvma.c +++ b/sys/arch/sparc/stand/common/dvma.c @@ -1,4 +1,4 @@ -/* $NetBSD: dvma.c,v 1.5 2000/02/15 14:09:59 pk Exp $ */ +/* $NetBSD: dvma.c,v 1.6 2000/04/14 14:14:47 pk Exp $ */ /* * Copyright (c) 1995 Gordon W. Ross * All rights reserved. @@ -59,14 +59,17 @@ static int base_va; void dvma_init() { - int segva, dmava; + u_int segva, dmava; + int nseg; extern int start; /* Align our address base with the DVMA segment */ + dmava = DVMA_BASE; base_va = segva = ((int)&start) & DVMA_BASE; /* Then double-map the DVMA adresses */ - for (dmava = DVMA_BASE; dmava < DVMA_BASE + DVMA_MAPLEN; ) { + nseg = (DVMA_MAPLEN + NBPSG - 1) >> SGSHIFT; + while (nseg-- > 0) { setsegmap(dmava, getsegmap(segva)); segva += NBPSG; dmava += NBPSG; |
