From: Julian Seward Date: Thu, 29 Jul 2004 22:22:31 +0000 (+0000) Subject: Fix carry flag computation for left rotates. X-Git-Tag: svn/VALGRIND_3_0_1^2~1177 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=83c70e60e255cc09b1b3ec15687867a4032ed692;p=thirdparty%2Fvalgrind.git Fix carry flag computation for left rotates. git-svn-id: svn://svn.valgrind.org/vex/trunk@157 --- diff --git a/VEX/priv/guest-x86/ghelpers.c b/VEX/priv/guest-x86/ghelpers.c index 7bf38d6c5d..6df69f6bdf 100644 --- a/VEX/priv/guest-x86/ghelpers.c +++ b/VEX/priv/guest-x86/ghelpers.c @@ -230,14 +230,14 @@ static inline int lshift(int x, int n) return cf | pf | af | zf | sf | of; \ } -/* ROL: cf' = msb(result). of' = msb(result) ^ lsb(result). */ +/* ROL: cf' = lsb(result). of' = msb(result) ^ lsb(result). */ /* DST = result, SRC = old flags */ #define ACTIONS_ROL(DATA_BITS,DATA_TYPE) \ { \ PREAMBLE(DATA_BITS); \ int fl \ = (CC_SRC & ~(CC_O | CC_C)) \ - | (CC_C & (CC_DST >> (DATA_BITS-1))) \ + | (CC_C & CC_DST) \ | (CC_O & (lshift(CC_DST, 11-(DATA_BITS-1)) \ ^ lshift(CC_DST, 11))); \ return fl; \