summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2014-12-04 01:10:50 +0000
committerdim <dim@FreeBSD.org>2014-12-04 01:10:50 +0000
commit856a79343271cb58623cc9f78fafa2d9c37b002a (patch)
tree616036877e3db77b527042f5f3c31e905097b2f6 /sys/dev
parentb431d8bfcf00b54b75c7998064e774897db68c97 (diff)
downloadFreeBSD-src-856a79343271cb58623cc9f78fafa2d9c37b002a.zip
FreeBSD-src-856a79343271cb58623cc9f78fafa2d9c37b002a.tar.gz
MFC r274922:
Fix the following -Werror warning from clang 3.5.0, while building the ath kernel module: sys/dev/ath/ath_hal/ar5212/ar5212_reset.c:2642:7: error: taking the absolute value of unsigned type 'unsigned int' has no effect [-Werror,-Wabsolute-value] if (abs(lp[0] * EEP_SCALE - target) < EEP_DELTA) { ^ sys/dev/ath/ah_osdep.h:74:18: note: expanded from macro 'abs' #define abs(_a) __builtin_abs(_a) ^ sys/dev/ath/ath_hal/ar5212/ar5212_reset.c:2642:7: note: remove the call to '__builtin_abs' since unsigned values cannot be negative sys/dev/ath/ah_osdep.h:74:18: note: expanded from macro 'abs' #define abs(_a) __builtin_abs(_a) ^ 1 error generated. This warning occurs because both lp[0] and target are unsigned, so the subtraction expression is also unsigned, and calling abs() is a no-op. However, the intention was to look at the absolute difference between the two unsigned quantities. Introduce a small static function to clarify what we're doing, and call that instead. Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D1212
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ath/ath_hal/ar5212/ar5212_reset.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c b/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c
index eca2e1f..ccdccb6 100644
--- a/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c
+++ b/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c
@@ -2605,6 +2605,12 @@ ar5212GetTargetPowers(struct ath_hal *ah, const struct ieee80211_channel *chan,
powInfo[ixlo].twicePwr54, powInfo[ixhi].twicePwr54);
}
+static uint32_t
+udiff(uint32_t u, uint32_t v)
+{
+ return (u >= v ? u - v : v - u);
+}
+
/*
* Search a list for a specified value v that is within
* EEP_DELTA of the search values. Return the closest
@@ -2639,7 +2645,7 @@ ar5212GetLowerUpperValues(uint16_t v, uint16_t *lp, uint16_t listSize,
* If value is close to the current value of the list
* then target is not between values, it is one of the values
*/
- if (abs(lp[0] * EEP_SCALE - target) < EEP_DELTA) {
+ if (udiff(lp[0] * EEP_SCALE, target) < EEP_DELTA) {
*vlo = *vhi = lp[0];
return;
}
OpenPOWER on IntegriCloud