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
| @@ -517,6 +517,11 @@ void OPPROTO op_movq_T0_im64(void) | @@ -517,6 +517,11 @@ void OPPROTO op_movq_T0_im64(void) | ||
| 517 | T0 = PARAMQ1; | 517 | T0 = PARAMQ1; |
| 518 | } | 518 | } |
| 519 | 519 | ||
| 520 | +void OPPROTO op_movq_T1_im64(void) | ||
| 521 | +{ | ||
| 522 | + T1 = PARAMQ1; | ||
| 523 | +} | ||
| 524 | + | ||
| 520 | void OPPROTO op_movq_A0_im(void) | 525 | void OPPROTO op_movq_A0_im(void) |
| 521 | { | 526 | { |
| 522 | A0 = (int32_t)PARAM1; | 527 | A0 = (int32_t)PARAM1; |
target-i386/translate.c
| @@ -2216,6 +2216,19 @@ static void gen_movtl_T0_im(target_ulong val) | @@ -2216,6 +2216,19 @@ static void gen_movtl_T0_im(target_ulong val) | ||
| 2216 | #endif | 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 | static GenOpFunc1 *gen_ldq_env_A0[3] = { | 2232 | static GenOpFunc1 *gen_ldq_env_A0[3] = { |
| 2220 | gen_op_ldq_raw_env_A0, | 2233 | gen_op_ldq_raw_env_A0, |
| 2221 | #ifndef CONFIG_USER_ONLY | 2234 | #ifndef CONFIG_USER_ONLY |
| @@ -3391,7 +3404,7 @@ static target_ulong disas_insn(DisasContext *s, target_ulong pc_start) | @@ -3391,7 +3404,7 @@ static target_ulong disas_insn(DisasContext *s, target_ulong pc_start) | ||
| 3391 | if (s->dflag == 0) | 3404 | if (s->dflag == 0) |
| 3392 | gen_op_andl_T0_ffff(); | 3405 | gen_op_andl_T0_ffff(); |
| 3393 | next_eip = s->pc - s->cs_base; | 3406 | next_eip = s->pc - s->cs_base; |
| 3394 | - gen_op_movl_T1_im(next_eip); | 3407 | + gen_movtl_T1_im(next_eip); |
| 3395 | gen_push_T1(s); | 3408 | gen_push_T1(s); |
| 3396 | gen_op_jmp_T0(); | 3409 | gen_op_jmp_T0(); |
| 3397 | gen_eob(s); | 3410 | gen_eob(s); |