diff options
author | jake <jake@FreeBSD.org> | 2002-01-08 04:43:04 +0000 |
---|---|---|
committer | jake <jake@FreeBSD.org> | 2002-01-08 04:43:04 +0000 |
commit | 94243355415343a2b26edbcc71077b7fc5c89248 (patch) | |
tree | a7206cb49135935cc040dcdeca045937c2367655 /sys | |
parent | 29ddfd4ed093481ac2628fcb9bbc03c4597c8247 (diff) | |
download | FreeBSD-src-94243355415343a2b26edbcc71077b7fc5c89248.zip FreeBSD-src-94243355415343a2b26edbcc71077b7fc5c89248.tar.gz |
Fix qsort callouts used for sorting memory regions during boot. vm_offset_t
is unsigned, so we can't use signed arithmetic.
Tripped over by: jhb
Diffstat (limited to 'sys')
-rw-r--r-- | sys/sparc64/sparc64/pmap.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/sys/sparc64/sparc64/pmap.c b/sys/sparc64/sparc64/pmap.c index 290b67c..55c1729 100644 --- a/sys/sparc64/sparc64/pmap.c +++ b/sys/sparc64/sparc64/pmap.c @@ -216,14 +216,32 @@ static int om_cmp(const void *a, const void *b); static int mr_cmp(const void *a, const void *b) { - return ((const struct mem_region *)a)->mr_start - - ((const struct mem_region *)b)->mr_start; + const struct mem_region *mra; + const struct mem_region *mrb; + + mra = a; + mrb = b; + if (mra->mr_start < mrb->mr_start) + return (-1); + else if (mra->mr_start > mrb->mr_start) + return (1); + else + return (0); } static int om_cmp(const void *a, const void *b) { - return ((const struct ofw_map *)a)->om_start - - ((const struct ofw_map *)b)->om_start; + const struct ofw_map *oma; + const struct ofw_map *omb; + + oma = a; + omb = b; + if (oma->om_start < omb->om_start) + return (-1); + else if (oma->om_start > omb->om_start) + return (1); + else + return (0); } /* |