svn commit: r275471 - in stable: 10/sys/dev/ath/ath_hal/ar5212 9/sys/dev/ath/ath_hal/ar5212
Dimitry Andric
dim at FreeBSD.org
Thu Dec 4 01:10:51 UTC 2014
Author: dim
Date: Thu Dec 4 01:10:50 2014
New Revision: 275471
URL: https://svnweb.freebsd.org/changeset/base/275471
Log:
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
Modified:
stable/9/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c
Directory Properties:
stable/9/sys/ (props changed)
Changes in other areas also in this revision:
Modified:
stable/10/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/9/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c
==============================================================================
--- stable/9/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c Wed Dec 3 23:37:23 2014 (r275470)
+++ stable/9/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c Thu Dec 4 01:10:50 2014 (r275471)
@@ -2459,6 +2459,12 @@ ar5212GetTargetPowers(struct ath_hal *ah
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
@@ -2493,7 +2499,7 @@ ar5212GetLowerUpperValues(uint16_t v, ui
* 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;
}
More information about the svn-src-stable-9
mailing list