summaryrefslogtreecommitdiff
path: root/src/lib/rmodule.ld
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2020-06-26 23:27:26 -0700
committerPatrick Georgi <pgeorgi@google.com>2020-07-06 06:14:57 +0000
commit63358eaff6058e2fa0ade9b452a7ffd7ce3f4ba8 (patch)
tree6895cd1c0e8eb324771437d2a8ddbc3c5a5bb5c2 /src/lib/rmodule.ld
parenta94136f082844b811b4cae25887740edf41503be (diff)
libpayload: cbgfx: Fix add_fractions() overflow reduction
log2(1) is 0 and log2(0) is -1. If we have the int64_t 0xffffffff then log2(0xffffffff >> 31) = log2(0x1) = 0, so the current reduction code would not shift. That's a bad idea, though, since 0xffffffff when interpreted as an int32_t would become a negative number. We need to always shift one more than the current code does to get a safe reduction. This also means we can get rid of another compare/branch since -1 is the smallest result log2() can return, so the shift can no longer go negative now. Signed-off-by: Julius Werner <jwerner@chromium.org> Change-Id: Ib1eb6364c35c26924804261c02171139cdbd1034 Reviewed-on: https://review.coreboot.org/c/coreboot/+/42845 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Yu-Ping Wu <yupingso@google.com> Reviewed-by: Joel Kitching <kitching@google.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Diffstat (limited to 'src/lib/rmodule.ld')
0 files changed, 0 insertions, 0 deletions