mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-02 09:46:37 +03:00
compat: math64: add abs_diff()
Add the abs_diff() macro, copied directly from Linux 6.18. Signed-off-by: Casey Connolly <casey.connolly@linaro.org>
This commit is contained in:
@@ -257,4 +257,23 @@ static inline u64 mul_u64_u32_div(u64 a, u32 mul, u32 divisor)
|
||||
}
|
||||
#endif /* mul_u64_u32_div */
|
||||
|
||||
/**
|
||||
* abs_diff - return absolute value of the difference between the arguments
|
||||
* @a: the first argument
|
||||
* @b: the second argument
|
||||
*
|
||||
* @a and @b have to be of the same type. With this restriction we compare
|
||||
* signed to signed and unsigned to unsigned. The result is the subtraction
|
||||
* the smaller of the two from the bigger, hence result is always a positive
|
||||
* value.
|
||||
*
|
||||
* Return: an absolute value of the difference between the @a and @b.
|
||||
*/
|
||||
#define abs_diff(a, b) ({ \
|
||||
typeof(a) __a = (a); \
|
||||
typeof(b) __b = (b); \
|
||||
(void)(&__a == &__b); \
|
||||
__a > __b ? (__a - __b) : (__b - __a); \
|
||||
})
|
||||
|
||||
#endif /* _LINUX_MATH64_H */
|
||||
|
||||
Reference in New Issue
Block a user