Module Name:src
Committed By: martin
Date: Wed Mar 21 11:09:27 UTC 2018
Modified Files:
src/sys/sys [netbsd-7-1]: bitops.h
Log Message:
Pull up following revision(s) (requested by mrg in ticket #1582):
sys/sys/bitops.h: revision 1.12
sys/sys/bitops.h: revision 1.13
sys/sys/bitops.h: revision 1.14
fix sign issues
use 1ul for a left shift that may be greater than int sized.
noticed by martin.
fixes PR#53081.
PR/53081: Fix size of the shift to depend on the type of the bitmap so that
we get the correct width.
To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.11.22.1 src/sys/sys/bitops.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/sys/bitops.h
diff -u src/sys/sys/bitops.h:1.11 src/sys/sys/bitops.h:1.11.22.1
--- src/sys/sys/bitops.h:1.11 Fri Dec 7 02:27:58 2012
+++ src/sys/sys/bitops.h Wed Mar 21 11:09:27 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: bitops.h,v 1.11 2012/12/07 02:27:58 christos Exp $ */
+/* $NetBSD: bitops.h,v 1.11.22.1 2018/03/21 11:09:27 martin Exp $ */
/*-
* Copyright (c) 2007, 2010 The NetBSD Foundation, Inc.
@@ -271,8 +271,8 @@ fast_divide32_prepare(uint32_t _div, uin
_l = fls32(_div - 1);
_mt = (uint64_t)(0x1ULL * ((1ULL << _l) - _div));
*_m = (uint32_t)(_mt / _div + 1);
- *_s1 = (_l > 1) ? 1 : _l;
- *_s2 = (_l == 0) ? 0 : _l - 1;
+ *_s1 = (_l > 1) ? 1U : (uint8_t)_l;
+ *_s2 = (_l == 0) ? 0 : (uint8_t)(_l - 1);
}
/* ARGSUSED */
@@ -304,7 +304,7 @@ fast_remainder32(uint32_t _v, uint32_t _
#define __BITMAP_SIZE(__t, __n) \
(((__n) + (__BITMAP_BITS(__t) - 1)) / __BITMAP_BITS(__t))
#define __BITMAP_BIT(__n, __v) \
-(1 << ((__n) & __BITMAP_MASK(*(__v)->_b)))
+((__typeof__((__v)->_b[0]))1 << ((__n) & __BITMAP_MASK(*(__v)->_b)))
#define __BITMAP_WORD(__n, __v) \
((__n) >> __BITMAP_SHIFT(*(__v)->_b))