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