Commit 1ef386870812993f6819e8ac6554d20ba532b383
1 parent
99c475ab
x86_64 call Ev fix
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1259 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
19 additions
and
1 deletions
target-i386/op.c
target-i386/translate.c
... | ... | @@ -2216,6 +2216,19 @@ static void gen_movtl_T0_im(target_ulong val) |
2216 | 2216 | #endif |
2217 | 2217 | } |
2218 | 2218 | |
2219 | +static void gen_movtl_T1_im(target_ulong val) | |
2220 | +{ | |
2221 | +#ifdef TARGET_X86_64 | |
2222 | + if ((int32_t)val == val) { | |
2223 | + gen_op_movl_T1_im(val); | |
2224 | + } else { | |
2225 | + gen_op_movq_T1_im64(val >> 32, val); | |
2226 | + } | |
2227 | +#else | |
2228 | + gen_op_movl_T1_im(val); | |
2229 | +#endif | |
2230 | +} | |
2231 | + | |
2219 | 2232 | static GenOpFunc1 *gen_ldq_env_A0[3] = { |
2220 | 2233 | gen_op_ldq_raw_env_A0, |
2221 | 2234 | #ifndef CONFIG_USER_ONLY |
... | ... | @@ -3391,7 +3404,7 @@ static target_ulong disas_insn(DisasContext *s, target_ulong pc_start) |
3391 | 3404 | if (s->dflag == 0) |
3392 | 3405 | gen_op_andl_T0_ffff(); |
3393 | 3406 | next_eip = s->pc - s->cs_base; |
3394 | - gen_op_movl_T1_im(next_eip); | |
3407 | + gen_movtl_T1_im(next_eip); | |
3395 | 3408 | gen_push_T1(s); |
3396 | 3409 | gen_op_jmp_T0(); |
3397 | 3410 | gen_eob(s); | ... | ... |