Index: target-arm/op.c =================================================================== RCS file: /cvsroot/qemu/qemu/target-arm/op.c,v retrieving revision 1.7 diff -u -r1.7 op.c --- target-arm/op.c 2 Feb 2005 20:43:01 -0000 1.7 +++ target-arm/op.c 4 Feb 2005 14:24:39 -0000 @@ -105,6 +105,12 @@ T1 = PARAM1; } +void OPPROTO op_movl_T1_im_cc(void) +{ + T1 = PARAM1; + env->CF = ((uint32_t)PARAM1) >> 31; +} + void OPPROTO op_movl_T2_im(void) { T2 = PARAM1; Index: target-arm/translate.c =================================================================== RCS file: /cvsroot/qemu/qemu/target-arm/translate.c,v retrieving revision 1.15 diff -u -r1.15 translate.c --- target-arm/translate.c 31 Jan 2005 20:43:28 -0000 1.15 +++ target-arm/translate.c 4 Feb 2005 14:24:39 -0000 @@ -535,8 +535,10 @@ shift = ((insn >> 8) & 0xf) * 2; if (shift) val = (val >> shift) | (val << (32 - shift)); - gen_op_movl_T1_im(val); - /* XXX: is CF modified ? */ + if (logic_cc && shift) + gen_op_movl_T1_im_cc(val); + else + gen_op_movl_T1_im(val); } else { /* register */ rm = (insn) & 0xf;