Commit 1ef386870812993f6819e8ac6554d20ba532b383

Authored by bellard
1 parent 99c475ab

x86_64 call Ev fix


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1259 c046a42c-6fe2-441c-8c8c-71466251a162
target-i386/op.c
... ... @@ -517,6 +517,11 @@ void OPPROTO op_movq_T0_im64(void)
517 517 T0 = PARAMQ1;
518 518 }
519 519  
  520 +void OPPROTO op_movq_T1_im64(void)
  521 +{
  522 + T1 = PARAMQ1;
  523 +}
  524 +
520 525 void OPPROTO op_movq_A0_im(void)
521 526 {
522 527 A0 = (int32_t)PARAM1;
... ...
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);
... ...