From: Gabe Black Date: Fri, 20 Jul 2007 21:54:17 +0000 (-0700) Subject: Fix function which calculates the carry flag. X-Git-Tag: m5_2.0_beta4~297^2~23 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ee22bcd60940ed8cd23865e40ed8debc6c1f4288;p=gem5.git Fix function which calculates the carry flag. --HG-- extra : convert_revision : aeb4f2d4c3936089421dbe80647f28ae36178283 --- diff --git a/src/base/condcodes.hh b/src/base/condcodes.hh index 10109e4ad..efff12dc8 100644 --- a/src/base/condcodes.hh +++ b/src/base/condcodes.hh @@ -32,6 +32,7 @@ #define __BASE_CONDCODE_HH__ #include "base/bitfield.hh" +#include "base/trace.hh" /** * Calculate the carry flag from an addition. This should work even when @@ -41,7 +42,9 @@ inline bool findCarry(int width, uint64_t dest, uint64_t src1, uint64_t src2) { int shift = width - 1; - return (~(dest >> shift) + (src1 >> shift) + (src2 >> shift)) & 0x2; + return ((~(dest >> shift) & 1) + + ((src1 >> shift) & 1) + + ((src2 >> shift) & 1)) & 0x2; } /**