diff options
author | Richard Henderson <rth@twiddle.net> | 2013-01-23 16:03:16 -0800 |
---|---|---|
committer | Richard Henderson <rth@twiddle.net> | 2013-02-18 15:39:09 -0800 |
commit | 988c3eb0d6f41ac13f4ec145c637f12c776de602 (patch) | |
tree | 870e54c572872d4a04c06722b803fdb48e387e66 /target-i386/cpu.h | |
parent | db9f2597722d5d8bc5f2330f186288d893114338 (diff) | |
download | hqemu-988c3eb0d6f41ac13f4ec145c637f12c776de602.zip hqemu-988c3eb0d6f41ac13f4ec145c637f12c776de602.tar.gz |
target-i386: Use CC_SRC2 for ADC and SBB
Add another slot in ENV and store two of the three inputs. This lets us
do less work when carry-out is not needed, and avoids the unpredictable
CC_OP after translating these insns.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Diffstat (limited to 'target-i386/cpu.h')
-rw-r--r-- | target-i386/cpu.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/target-i386/cpu.h b/target-i386/cpu.h index 8c4c605..1fa9dc8 100644 --- a/target-i386/cpu.h +++ b/target-i386/cpu.h @@ -725,8 +725,9 @@ typedef struct CPUX86State { stored elsewhere */ /* emulator internal eflags handling */ - target_ulong cc_src; target_ulong cc_dst; + target_ulong cc_src; + target_ulong cc_src2; uint32_t cc_op; int32_t df; /* D flag : 1 if D = 0, -1 if D = 1 */ uint32_t hflags; /* TB flags, see HF_xxx constants. These flags @@ -1116,9 +1117,10 @@ static inline int cpu_mmu_index (CPUX86State *env) #define EIP (env->eip) #define DF (env->df) -#define CC_SRC (env->cc_src) -#define CC_DST (env->cc_dst) -#define CC_OP (env->cc_op) +#define CC_DST (env->cc_dst) +#define CC_SRC (env->cc_src) +#define CC_SRC2 (env->cc_src2) +#define CC_OP (env->cc_op) /* n must be a constant to be efficient */ static inline target_long lshift(target_long x, int n) |