Fix ARM and Thumb ldlex/stlex.
authorbalrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 13 Apr 2008 01:53:27 +0000 (01:53 +0000)
committerbalrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 13 Apr 2008 01:53:27 +0000 (01:53 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4202 c046a42c-6fe2-441c-8c8c-71466251a162

target-arm/translate.c

index f1695de..3d5142a 100644 (file)
@@ -6241,6 +6241,7 @@ static void disas_arm_insn(CPUState * env, DisasContext *s)
                     if (insn & (1 << 23)) {
                         /* load/store exclusive */
                         gen_movl_T1_reg(s, rn);
+                        addr = cpu_T[1];
                         if (insn & (1 << 20)) {
                             gen_helper_mark_exclusive(cpu_env, cpu_T[1]);
                             tmp = gen_ld32(addr, IS_USER(s));
@@ -6991,6 +6992,7 @@ static int disas_thumb2_insn(CPUState *env, DisasContext *s, uint16_t insn_hw1)
             } else if ((insn & (1 << 23)) == 0) {
                 /* Load/store exclusive word.  */
                 gen_movl_T1_reg(s, rn);
+                addr = cpu_T[1];
                 if (insn & (1 << 20)) {
                     gen_helper_mark_exclusive(cpu_env, cpu_T[1]);
                     tmp = gen_ld32(addr, IS_USER(s));