From: Luis Pires <luis.pi...@eldorado.org.br> Introduce uabs64(), a function that returns the absolute value of a 64-bit int as an unsigned value. This avoids the undefined behavior for common abs implementations, where abs of the most negative value is undefined.
Signed-off-by: Luis Pires <luis.pi...@eldorado.org.br> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Reviewed-by: Eduardo Habkost <ehabk...@redhat.com> Message-Id: <20210910112624.72748-4-luis.pi...@eldorado.org.br> Signed-off-by: David Gibson <da...@gibson.dropbear.id.au> --- include/qemu/host-utils.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/qemu/host-utils.h b/include/qemu/host-utils.h index 753b9fb89f..ca9f3f021b 100644 --- a/include/qemu/host-utils.h +++ b/include/qemu/host-utils.h @@ -357,6 +357,14 @@ static inline uint64_t revbit64(uint64_t x) #endif } +/** + * Return the absolute value of a 64-bit integer as an unsigned 64-bit value + */ +static inline uint64_t uabs64(int64_t v) +{ + return v < 0 ? -v : v; +} + /** * sadd32_overflow - addition with overflow indication * @x, @y: addends -- 2.31.1