sparc64: fix ldxfsr insn
authorIgor V. Kovalenko <igor.v.kovalenko@gmail.com>
Tue, 1 Jun 2010 20:12:37 +0000 (00:12 +0400)
committerBlue Swirl <blauwirbel@gmail.com>
Wed, 2 Jun 2010 20:05:30 +0000 (20:05 +0000)
- rearrange code to break from switch when appropriate
- allow deprecated ldfsr insn

Signed-off-by: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
target-sparc/translate.c

index eff64d458277c7ef30e3cba801e75883b5fe29d5..0bc1a827065f9e08fa30e96f7b2962d5736d70cb 100644 (file)
@@ -4476,7 +4476,11 @@ static void disas_sparc_insn(DisasContext * dc)
                     if (rd == 1) {
                         tcg_gen_qemu_ld64(cpu_tmp64, cpu_addr, dc->mem_idx);
                         gen_helper_ldxfsr(cpu_tmp64);
-                    } else
+                    } else {
+                        tcg_gen_qemu_ld32u(cpu_tmp0, cpu_addr, dc->mem_idx);
+                        tcg_gen_trunc_tl_i32(cpu_tmp32, cpu_tmp0);
+                        gen_helper_ldfsr(cpu_tmp32);
+                    }
 #else
                     {
                         tcg_gen_qemu_ld32u(cpu_tmp32, cpu_addr, dc->mem_idx);