]> git.proxmox.com Git - qemu.git/commitdiff
CF generator for constant operands
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 7 Feb 2005 12:42:35 +0000 (12:42 +0000)
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 7 Feb 2005 12:42:35 +0000 (12:42 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1267 c046a42c-6fe2-441c-8c8c-71466251a162

target-arm/op.c
target-arm/translate.c

index 813c285b5691525e23280c6b144f8ecccab1224e..561883457d2b662bca7a1de140a053c5845a2809 100644 (file)
@@ -105,6 +105,11 @@ void OPPROTO op_movl_T1_im(void)
     T1 = PARAM1;
 }
 
+void OPPROTO op_mov_CF_T1(void)
+{
+    env->CF = ((uint32_t)T1) >> 31;
+}
+
 void OPPROTO op_movl_T2_im(void)
 {
     T2 = PARAM1;
index e2c5b8fc09038a5fbb4f432666a6e84a85ef4810..7223242136039f4bb5ed1613aa5c94d3628d5642 100644 (file)
@@ -536,7 +536,8 @@ static void disas_arm_insn(DisasContext *s)
             if (shift)
                 val = (val >> shift) | (val << (32 - shift));
             gen_op_movl_T1_im(val);
-            /* XXX: is CF modified ? */
+            if (logic_cc && shift)
+                gen_op_mov_CF_T1();
         } else {
             /* register */
             rm = (insn) & 0xf;