diff options
author | Luis Pires <luis.pires@eldorado.org.br> | 2021-09-10 08:26:04 -0300 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2021-09-29 19:37:38 +1000 |
commit | 4ff2a971f4dd533140c01607a0c776ba8d837bc7 (patch) | |
tree | e5d904ea4aed3805a8a878b915a29281da4efa17 /include | |
parent | 06c0259a086f0f4ddd57a14ba811bba0b9e45130 (diff) | |
download | qemu-4ff2a971f4dd533140c01607a0c776ba8d837bc7.zip qemu-4ff2a971f4dd533140c01607a0c776ba8d837bc7.tar.gz qemu-4ff2a971f4dd533140c01607a0c776ba8d837bc7.tar.bz2 |
host-utils: fix missing zero-extension in divs128
*plow (lower 64 bits of the dividend) is passed into divs128() as
a signed 64-bit integer. When building an __int128_t from it, it
must be zero-extended, instead of sign-extended.
Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Luis Pires <luis.pires@eldorado.org.br>
Message-Id: <20210910112624.72748-3-luis.pires@eldorado.org.br>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'include')
-rw-r--r-- | include/qemu/host-utils.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/qemu/host-utils.h b/include/qemu/host-utils.h index 711b221..753b9fb 100644 --- a/include/qemu/host-utils.h +++ b/include/qemu/host-utils.h @@ -70,7 +70,7 @@ static inline int divs128(int64_t *plow, int64_t *phigh, int64_t divisor) if (divisor == 0) { return 1; } else { - __int128_t dividend = ((__int128_t)*phigh << 64) | *plow; + __int128_t dividend = ((__int128_t)*phigh << 64) | (uint64_t)*plow; __int128_t result = dividend / divisor; *plow = result; *phigh = dividend % divisor; |