From ee22bcd60940ed8cd23865e40ed8debc6c1f4288 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Fri, 20 Jul 2007 14:54:17 -0700 Subject: Fix function which calculates the carry flag. --HG-- extra : convert_revision : aeb4f2d4c3936089421dbe80647f28ae36178283 --- src/base/condcodes.hh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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; } /** -- cgit v1.2.3