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); | ... | ... |