fixed eflags optimisations with string operation (aka linux 2.6.2rc1 fix) - removed warnings
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@585 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
10f0e412f8
commit
7399c5a9be
@ -697,7 +697,15 @@ static GenOpFunc *gen_op_dec_ECX[2] = {
|
||||
gen_op_decl_ECX,
|
||||
};
|
||||
|
||||
static GenOpFunc1 *gen_op_string_jnz_sub[2][3] = {
|
||||
#ifdef USE_DIRECT_JUMP
|
||||
typedef GenOpFunc GenOpFuncTB2;
|
||||
#define gen_op_string_jnz_sub(nz, ot, tb) gen_op_string_jnz_sub2[nz][ot]()
|
||||
#else
|
||||
typedef GenOpFunc1 GenOpFuncTB2;
|
||||
#define gen_op_string_jnz_sub(nz, ot, tb) gen_op_string_jnz_sub2[nz][ot](tb)
|
||||
#endif
|
||||
|
||||
static GenOpFuncTB2 *gen_op_string_jnz_sub2[2][3] = {
|
||||
{
|
||||
gen_op_string_jnz_subb,
|
||||
gen_op_string_jnz_subw,
|
||||
@ -921,7 +929,7 @@ static inline void gen_repz_ ## op(DisasContext *s, int ot, \
|
||||
if (!s->jmp_opt) \
|
||||
gen_op_string_jnz_sub_im[nz][ot](next_eip); \
|
||||
else \
|
||||
gen_op_string_jnz_sub[nz][ot]((long)s->tb); \
|
||||
gen_op_string_jnz_sub(nz, ot, (long)s->tb); \
|
||||
if (!s->jmp_opt) \
|
||||
gen_op_jz_ecx_im[s->aflag](next_eip); \
|
||||
gen_jmp(s, cur_eip); \
|
||||
@ -4228,6 +4236,12 @@ static uint16_t opc_read_flags[NB_OPS] = {
|
||||
[INDEX_op_cmc] = CC_C,
|
||||
[INDEX_op_salc] = CC_C,
|
||||
|
||||
/* needed for correct flag optimisation before string ops */
|
||||
[INDEX_op_jz_ecxw] = CC_OSZAPC,
|
||||
[INDEX_op_jz_ecxl] = CC_OSZAPC,
|
||||
[INDEX_op_jz_ecxw_im] = CC_OSZAPC,
|
||||
[INDEX_op_jz_ecxl_im] = CC_OSZAPC,
|
||||
|
||||
#define DEF_READF(SUFFIX)\
|
||||
[INDEX_op_adcb ## SUFFIX ## _T0_T1_cc] = CC_C,\
|
||||
[INDEX_op_adcw ## SUFFIX ## _T0_T1_cc] = CC_C,\
|
||||
|
Loading…
Reference in New Issue
Block a user