]> Git Repo - qemu.git/blobdiff - target-i386/op.c
x86_64 fixes
[qemu.git] / target-i386 / op.c
index ab7501e9399420b3e1523afc87f0e3ca49ad350b..dd9d7bad1f10d4d7d29f2055a6ce7b393fdf019d 100644 (file)
@@ -286,8 +286,8 @@ void OPPROTO op_imull_EAX_T0(void)
 {
     int64_t res;
     res = (int64_t)((int32_t)EAX) * (int64_t)((int32_t)T0);
-    EAX = res;
-    EDX = res >> 32;
+    EAX = (uint32_t)(res);
+    EDX = (uint32_t)(res >> 32);
     CC_DST = res;
     CC_SRC = (res != (int32_t)res);
 }
@@ -517,6 +517,11 @@ void OPPROTO op_movq_T0_im64(void)
     T0 = PARAMQ1;
 }
 
+void OPPROTO op_movq_T1_im64(void)
+{
+    T1 = PARAMQ1;
+}
+
 void OPPROTO op_movq_A0_im(void)
 {
     A0 = (int32_t)PARAM1;
@@ -1198,6 +1203,13 @@ void OPPROTO op_movl_crN_T0(void)
     helper_movl_crN_T0(PARAM1);
 }
 
+#if !defined(CONFIG_USER_ONLY) 
+void OPPROTO op_movtl_T0_cr8(void)
+{
+    T0 = cpu_get_apic_tpr(env);
+}
+#endif
+
 /* DR registers access */
 void OPPROTO op_movl_drN_T0(void)
 {
@@ -1279,12 +1291,14 @@ void OPPROTO op_jnz_T0_label(void)
 {
     if (T0)
         GOTO_LABEL_PARAM(1);
+    FORCE_RET();
 }
 
 void OPPROTO op_jz_T0_label(void)
 {
     if (!T0)
         GOTO_LABEL_PARAM(1);
+    FORCE_RET();
 }
 
 /* slow set cases (compute x86 flags) */
@@ -1352,6 +1366,11 @@ void OPPROTO op_set_cc_op(void)
     CC_OP = PARAM1;
 }
 
+void OPPROTO op_mov_T0_cc(void)
+{
+    T0 = cc_table[CC_OP].compute_all();
+}
+
 /* XXX: clear VIF/VIP in all ops ? */
 
 void OPPROTO op_movl_eflags_T0(void)
This page took 0.024945 seconds and 4 git commands to generate.