Commit 2382dc6b9b1bd130f16330965a9163681e786cd9

Authored by blueswir1
1 parent 8ef6367e

Fix floating point register decoding


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3742 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 139 additions and 141 deletions
target-sparc/translate.c
@@ -440,11 +440,10 @@ static inline void gen_st_asi(int insn, int size) @@ -440,11 +440,10 @@ static inline void gen_st_asi(int insn, int size)
440 } 440 }
441 } 441 }
442 442
443 -static inline void gen_ldf_asi(int insn, int size) 443 +static inline void gen_ldf_asi(int insn, int size, int rd)
444 { 444 {
445 - int asi, offset, rd; 445 + int asi, offset;
446 446
447 - rd = DFPREG(GET_FIELD(insn, 2, 6));  
448 if (IS_IMM) { 447 if (IS_IMM) {
449 offset = GET_FIELD(insn, 25, 31); 448 offset = GET_FIELD(insn, 25, 31);
450 gen_op_ldf_asi_reg(offset, size, rd); 449 gen_op_ldf_asi_reg(offset, size, rd);
@@ -454,11 +453,10 @@ static inline void gen_ldf_asi(int insn, int size) @@ -454,11 +453,10 @@ static inline void gen_ldf_asi(int insn, int size)
454 } 453 }
455 } 454 }
456 455
457 -static inline void gen_stf_asi(int insn, int size) 456 +static inline void gen_stf_asi(int insn, int size, int rd)
458 { 457 {
459 - int asi, offset, rd; 458 + int asi, offset;
460 459
461 - rd = DFPREG(GET_FIELD(insn, 2, 6));  
462 if (IS_IMM) { 460 if (IS_IMM) {
463 offset = GET_FIELD(insn, 25, 31); 461 offset = GET_FIELD(insn, 25, 31);
464 gen_op_stf_asi_reg(offset, size, rd); 462 gen_op_stf_asi_reg(offset, size, rd);
@@ -1571,7 +1569,7 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1571,7 +1569,7 @@ static void disas_sparc_insn(DisasContext * dc)
1571 gen_op_load_fpr_DT0(DFPREG(rs1)); 1569 gen_op_load_fpr_DT0(DFPREG(rs1));
1572 gen_op_load_fpr_DT1(DFPREG(rs2)); 1570 gen_op_load_fpr_DT1(DFPREG(rs2));
1573 gen_op_fmuld(); 1571 gen_op_fmuld();
1574 - gen_op_store_DT0_fpr(rd); 1572 + gen_op_store_DT0_fpr(DFPREG(rd));
1575 break; 1573 break;
1576 case 0x4b: /* fmulq */ 1574 case 0x4b: /* fmulq */
1577 #if defined(CONFIG_USER_ONLY) 1575 #if defined(CONFIG_USER_ONLY)
@@ -1692,7 +1690,7 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1692,7 +1690,7 @@ static void disas_sparc_insn(DisasContext * dc)
1692 gen_op_store_FT0_fpr(rd); 1690 gen_op_store_FT0_fpr(rd);
1693 break; 1691 break;
1694 case 0xd2: 1692 case 0xd2:
1695 - gen_op_load_fpr_DT1(rs2); 1693 + gen_op_load_fpr_DT1(DFPREG(rs2));
1696 gen_op_fdtoi(); 1694 gen_op_fdtoi();
1697 gen_op_store_FT0_fpr(rd); 1695 gen_op_store_FT0_fpr(rd);
1698 break; 1696 break;
@@ -1812,14 +1810,14 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1812,14 +1810,14 @@ static void disas_sparc_insn(DisasContext * dc)
1812 break; 1810 break;
1813 } else if ((xop & 0x11f) == 0x006) { // V9 fmovdr 1811 } else if ((xop & 0x11f) == 0x006) { // V9 fmovdr
1814 cond = GET_FIELD_SP(insn, 14, 17); 1812 cond = GET_FIELD_SP(insn, 14, 17);
1815 - gen_op_load_fpr_DT0(rd);  
1816 - gen_op_load_fpr_DT1(rs2); 1813 + gen_op_load_fpr_DT0(DFPREG(rd));
  1814 + gen_op_load_fpr_DT1(DFPREG(rs2));
1817 flush_T2(dc); 1815 flush_T2(dc);
1818 rs1 = GET_FIELD(insn, 13, 17); 1816 rs1 = GET_FIELD(insn, 13, 17);
1819 gen_movl_reg_T0(rs1); 1817 gen_movl_reg_T0(rs1);
1820 gen_cond_reg(cond); 1818 gen_cond_reg(cond);
1821 gen_op_fmovs_cc(); 1819 gen_op_fmovs_cc();
1822 - gen_op_store_DT0_fpr(rd); 1820 + gen_op_store_DT0_fpr(DFPREG(rd));
1823 break; 1821 break;
1824 } else if ((xop & 0x11f) == 0x007) { // V9 fmovqr 1822 } else if ((xop & 0x11f) == 0x007) { // V9 fmovqr
1825 #if defined(CONFIG_USER_ONLY) 1823 #if defined(CONFIG_USER_ONLY)
@@ -1851,12 +1849,12 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1851,12 +1849,12 @@ static void disas_sparc_insn(DisasContext * dc)
1851 break; 1849 break;
1852 case 0x002: /* V9 fmovdcc %fcc0 */ 1850 case 0x002: /* V9 fmovdcc %fcc0 */
1853 cond = GET_FIELD_SP(insn, 14, 17); 1851 cond = GET_FIELD_SP(insn, 14, 17);
1854 - gen_op_load_fpr_DT0(rd);  
1855 - gen_op_load_fpr_DT1(rs2); 1852 + gen_op_load_fpr_DT0(DFPREG(rd));
  1853 + gen_op_load_fpr_DT1(DFPREG(rs2));
1856 flush_T2(dc); 1854 flush_T2(dc);
1857 gen_fcond[0][cond](); 1855 gen_fcond[0][cond]();
1858 gen_op_fmovd_cc(); 1856 gen_op_fmovd_cc();
1859 - gen_op_store_DT0_fpr(rd); 1857 + gen_op_store_DT0_fpr(DFPREG(rd));
1860 break; 1858 break;
1861 case 0x003: /* V9 fmovqcc %fcc0 */ 1859 case 0x003: /* V9 fmovqcc %fcc0 */
1862 #if defined(CONFIG_USER_ONLY) 1860 #if defined(CONFIG_USER_ONLY)
@@ -1882,12 +1880,12 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1882,12 +1880,12 @@ static void disas_sparc_insn(DisasContext * dc)
1882 break; 1880 break;
1883 case 0x042: /* V9 fmovdcc %fcc1 */ 1881 case 0x042: /* V9 fmovdcc %fcc1 */
1884 cond = GET_FIELD_SP(insn, 14, 17); 1882 cond = GET_FIELD_SP(insn, 14, 17);
1885 - gen_op_load_fpr_DT0(rd);  
1886 - gen_op_load_fpr_DT1(rs2); 1883 + gen_op_load_fpr_DT0(DFPREG(rd));
  1884 + gen_op_load_fpr_DT1(DFPREG(rs2));
1887 flush_T2(dc); 1885 flush_T2(dc);
1888 gen_fcond[1][cond](); 1886 gen_fcond[1][cond]();
1889 gen_op_fmovd_cc(); 1887 gen_op_fmovd_cc();
1890 - gen_op_store_DT0_fpr(rd); 1888 + gen_op_store_DT0_fpr(DFPREG(rd));
1891 break; 1889 break;
1892 case 0x043: /* V9 fmovqcc %fcc1 */ 1890 case 0x043: /* V9 fmovqcc %fcc1 */
1893 #if defined(CONFIG_USER_ONLY) 1891 #if defined(CONFIG_USER_ONLY)
@@ -1913,12 +1911,12 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1913,12 +1911,12 @@ static void disas_sparc_insn(DisasContext * dc)
1913 break; 1911 break;
1914 case 0x082: /* V9 fmovdcc %fcc2 */ 1912 case 0x082: /* V9 fmovdcc %fcc2 */
1915 cond = GET_FIELD_SP(insn, 14, 17); 1913 cond = GET_FIELD_SP(insn, 14, 17);
1916 - gen_op_load_fpr_DT0(rd);  
1917 - gen_op_load_fpr_DT1(rs2); 1914 + gen_op_load_fpr_DT0(DFPREG(rd));
  1915 + gen_op_load_fpr_DT1(DFPREG(rs2));
1918 flush_T2(dc); 1916 flush_T2(dc);
1919 gen_fcond[2][cond](); 1917 gen_fcond[2][cond]();
1920 gen_op_fmovd_cc(); 1918 gen_op_fmovd_cc();
1921 - gen_op_store_DT0_fpr(rd); 1919 + gen_op_store_DT0_fpr(DFPREG(rd));
1922 break; 1920 break;
1923 case 0x083: /* V9 fmovqcc %fcc2 */ 1921 case 0x083: /* V9 fmovqcc %fcc2 */
1924 #if defined(CONFIG_USER_ONLY) 1922 #if defined(CONFIG_USER_ONLY)
@@ -1944,12 +1942,12 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1944,12 +1942,12 @@ static void disas_sparc_insn(DisasContext * dc)
1944 break; 1942 break;
1945 case 0x0c2: /* V9 fmovdcc %fcc3 */ 1943 case 0x0c2: /* V9 fmovdcc %fcc3 */
1946 cond = GET_FIELD_SP(insn, 14, 17); 1944 cond = GET_FIELD_SP(insn, 14, 17);
1947 - gen_op_load_fpr_DT0(rd);  
1948 - gen_op_load_fpr_DT1(rs2); 1945 + gen_op_load_fpr_DT0(DFPREG(rd));
  1946 + gen_op_load_fpr_DT1(DFPREG(rs2));
1949 flush_T2(dc); 1947 flush_T2(dc);
1950 gen_fcond[3][cond](); 1948 gen_fcond[3][cond]();
1951 gen_op_fmovd_cc(); 1949 gen_op_fmovd_cc();
1952 - gen_op_store_DT0_fpr(rd); 1950 + gen_op_store_DT0_fpr(DFPREG(rd));
1953 break; 1951 break;
1954 case 0x0c3: /* V9 fmovqcc %fcc3 */ 1952 case 0x0c3: /* V9 fmovqcc %fcc3 */
1955 #if defined(CONFIG_USER_ONLY) 1953 #if defined(CONFIG_USER_ONLY)
@@ -1975,12 +1973,12 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1975,12 +1973,12 @@ static void disas_sparc_insn(DisasContext * dc)
1975 break; 1973 break;
1976 case 0x102: /* V9 fmovdcc %icc */ 1974 case 0x102: /* V9 fmovdcc %icc */
1977 cond = GET_FIELD_SP(insn, 14, 17); 1975 cond = GET_FIELD_SP(insn, 14, 17);
1978 - gen_op_load_fpr_DT0(rd);  
1979 - gen_op_load_fpr_DT1(rs2); 1976 + gen_op_load_fpr_DT0(DFPREG(rd));
  1977 + gen_op_load_fpr_DT1(DFPREG(rs2));
1980 flush_T2(dc); 1978 flush_T2(dc);
1981 gen_cond[0][cond](); 1979 gen_cond[0][cond]();
1982 gen_op_fmovd_cc(); 1980 gen_op_fmovd_cc();
1983 - gen_op_store_DT0_fpr(rd); 1981 + gen_op_store_DT0_fpr(DFPREG(rd));
1984 break; 1982 break;
1985 case 0x103: /* V9 fmovqcc %icc */ 1983 case 0x103: /* V9 fmovqcc %icc */
1986 #if defined(CONFIG_USER_ONLY) 1984 #if defined(CONFIG_USER_ONLY)
@@ -2006,12 +2004,12 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2006,12 +2004,12 @@ static void disas_sparc_insn(DisasContext * dc)
2006 break; 2004 break;
2007 case 0x182: /* V9 fmovdcc %xcc */ 2005 case 0x182: /* V9 fmovdcc %xcc */
2008 cond = GET_FIELD_SP(insn, 14, 17); 2006 cond = GET_FIELD_SP(insn, 14, 17);
2009 - gen_op_load_fpr_DT0(rd);  
2010 - gen_op_load_fpr_DT1(rs2); 2007 + gen_op_load_fpr_DT0(DFPREG(rd));
  2008 + gen_op_load_fpr_DT1(DFPREG(rs2));
2011 flush_T2(dc); 2009 flush_T2(dc);
2012 gen_cond[1][cond](); 2010 gen_cond[1][cond]();
2013 gen_op_fmovd_cc(); 2011 gen_op_fmovd_cc();
2014 - gen_op_store_DT0_fpr(rd); 2012 + gen_op_store_DT0_fpr(DFPREG(rd));
2015 break; 2013 break;
2016 case 0x183: /* V9 fmovqcc %xcc */ 2014 case 0x183: /* V9 fmovqcc %xcc */
2017 #if defined(CONFIG_USER_ONLY) 2015 #if defined(CONFIG_USER_ONLY)
@@ -2668,94 +2666,94 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2668,94 +2666,94 @@ static void disas_sparc_insn(DisasContext * dc)
2668 // XXX 2666 // XXX
2669 goto illegal_insn; 2667 goto illegal_insn;
2670 case 0x020: /* VIS I fcmple16 */ 2668 case 0x020: /* VIS I fcmple16 */
2671 - gen_op_load_fpr_DT0(rs1);  
2672 - gen_op_load_fpr_DT1(rs2); 2669 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2670 + gen_op_load_fpr_DT1(DFPREG(rs2));
2673 gen_op_fcmple16(); 2671 gen_op_fcmple16();
2674 - gen_op_store_DT0_fpr(rd); 2672 + gen_op_store_DT0_fpr(DFPREG(rd));
2675 break; 2673 break;
2676 case 0x022: /* VIS I fcmpne16 */ 2674 case 0x022: /* VIS I fcmpne16 */
2677 - gen_op_load_fpr_DT0(rs1);  
2678 - gen_op_load_fpr_DT1(rs2); 2675 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2676 + gen_op_load_fpr_DT1(DFPREG(rs2));
2679 gen_op_fcmpne16(); 2677 gen_op_fcmpne16();
2680 - gen_op_store_DT0_fpr(rd); 2678 + gen_op_store_DT0_fpr(DFPREG(rd));
2681 break; 2679 break;
2682 case 0x024: /* VIS I fcmple32 */ 2680 case 0x024: /* VIS I fcmple32 */
2683 - gen_op_load_fpr_DT0(rs1);  
2684 - gen_op_load_fpr_DT1(rs2); 2681 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2682 + gen_op_load_fpr_DT1(DFPREG(rs2));
2685 gen_op_fcmple32(); 2683 gen_op_fcmple32();
2686 - gen_op_store_DT0_fpr(rd); 2684 + gen_op_store_DT0_fpr(DFPREG(rd));
2687 break; 2685 break;
2688 case 0x026: /* VIS I fcmpne32 */ 2686 case 0x026: /* VIS I fcmpne32 */
2689 - gen_op_load_fpr_DT0(rs1);  
2690 - gen_op_load_fpr_DT1(rs2); 2687 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2688 + gen_op_load_fpr_DT1(DFPREG(rs2));
2691 gen_op_fcmpne32(); 2689 gen_op_fcmpne32();
2692 - gen_op_store_DT0_fpr(rd); 2690 + gen_op_store_DT0_fpr(DFPREG(rd));
2693 break; 2691 break;
2694 case 0x028: /* VIS I fcmpgt16 */ 2692 case 0x028: /* VIS I fcmpgt16 */
2695 - gen_op_load_fpr_DT0(rs1);  
2696 - gen_op_load_fpr_DT1(rs2); 2693 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2694 + gen_op_load_fpr_DT1(DFPREG(rs2));
2697 gen_op_fcmpgt16(); 2695 gen_op_fcmpgt16();
2698 - gen_op_store_DT0_fpr(rd); 2696 + gen_op_store_DT0_fpr(DFPREG(rd));
2699 break; 2697 break;
2700 case 0x02a: /* VIS I fcmpeq16 */ 2698 case 0x02a: /* VIS I fcmpeq16 */
2701 - gen_op_load_fpr_DT0(rs1);  
2702 - gen_op_load_fpr_DT1(rs2); 2699 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2700 + gen_op_load_fpr_DT1(DFPREG(rs2));
2703 gen_op_fcmpeq16(); 2701 gen_op_fcmpeq16();
2704 - gen_op_store_DT0_fpr(rd); 2702 + gen_op_store_DT0_fpr(DFPREG(rd));
2705 break; 2703 break;
2706 case 0x02c: /* VIS I fcmpgt32 */ 2704 case 0x02c: /* VIS I fcmpgt32 */
2707 - gen_op_load_fpr_DT0(rs1);  
2708 - gen_op_load_fpr_DT1(rs2); 2705 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2706 + gen_op_load_fpr_DT1(DFPREG(rs2));
2709 gen_op_fcmpgt32(); 2707 gen_op_fcmpgt32();
2710 - gen_op_store_DT0_fpr(rd); 2708 + gen_op_store_DT0_fpr(DFPREG(rd));
2711 break; 2709 break;
2712 case 0x02e: /* VIS I fcmpeq32 */ 2710 case 0x02e: /* VIS I fcmpeq32 */
2713 - gen_op_load_fpr_DT0(rs1);  
2714 - gen_op_load_fpr_DT1(rs2); 2711 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2712 + gen_op_load_fpr_DT1(DFPREG(rs2));
2715 gen_op_fcmpeq32(); 2713 gen_op_fcmpeq32();
2716 - gen_op_store_DT0_fpr(rd); 2714 + gen_op_store_DT0_fpr(DFPREG(rd));
2717 break; 2715 break;
2718 case 0x031: /* VIS I fmul8x16 */ 2716 case 0x031: /* VIS I fmul8x16 */
2719 - gen_op_load_fpr_DT0(rs1);  
2720 - gen_op_load_fpr_DT1(rs2); 2717 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2718 + gen_op_load_fpr_DT1(DFPREG(rs2));
2721 gen_op_fmul8x16(); 2719 gen_op_fmul8x16();
2722 - gen_op_store_DT0_fpr(rd); 2720 + gen_op_store_DT0_fpr(DFPREG(rd));
2723 break; 2721 break;
2724 case 0x033: /* VIS I fmul8x16au */ 2722 case 0x033: /* VIS I fmul8x16au */
2725 - gen_op_load_fpr_DT0(rs1);  
2726 - gen_op_load_fpr_DT1(rs2); 2723 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2724 + gen_op_load_fpr_DT1(DFPREG(rs2));
2727 gen_op_fmul8x16au(); 2725 gen_op_fmul8x16au();
2728 - gen_op_store_DT0_fpr(rd); 2726 + gen_op_store_DT0_fpr(DFPREG(rd));
2729 break; 2727 break;
2730 case 0x035: /* VIS I fmul8x16al */ 2728 case 0x035: /* VIS I fmul8x16al */
2731 - gen_op_load_fpr_DT0(rs1);  
2732 - gen_op_load_fpr_DT1(rs2); 2729 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2730 + gen_op_load_fpr_DT1(DFPREG(rs2));
2733 gen_op_fmul8x16al(); 2731 gen_op_fmul8x16al();
2734 - gen_op_store_DT0_fpr(rd); 2732 + gen_op_store_DT0_fpr(DFPREG(rd));
2735 break; 2733 break;
2736 case 0x036: /* VIS I fmul8sux16 */ 2734 case 0x036: /* VIS I fmul8sux16 */
2737 - gen_op_load_fpr_DT0(rs1);  
2738 - gen_op_load_fpr_DT1(rs2); 2735 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2736 + gen_op_load_fpr_DT1(DFPREG(rs2));
2739 gen_op_fmul8sux16(); 2737 gen_op_fmul8sux16();
2740 - gen_op_store_DT0_fpr(rd); 2738 + gen_op_store_DT0_fpr(DFPREG(rd));
2741 break; 2739 break;
2742 case 0x037: /* VIS I fmul8ulx16 */ 2740 case 0x037: /* VIS I fmul8ulx16 */
2743 - gen_op_load_fpr_DT0(rs1);  
2744 - gen_op_load_fpr_DT1(rs2); 2741 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2742 + gen_op_load_fpr_DT1(DFPREG(rs2));
2745 gen_op_fmul8ulx16(); 2743 gen_op_fmul8ulx16();
2746 - gen_op_store_DT0_fpr(rd); 2744 + gen_op_store_DT0_fpr(DFPREG(rd));
2747 break; 2745 break;
2748 case 0x038: /* VIS I fmuld8sux16 */ 2746 case 0x038: /* VIS I fmuld8sux16 */
2749 - gen_op_load_fpr_DT0(rs1);  
2750 - gen_op_load_fpr_DT1(rs2); 2747 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2748 + gen_op_load_fpr_DT1(DFPREG(rs2));
2751 gen_op_fmuld8sux16(); 2749 gen_op_fmuld8sux16();
2752 - gen_op_store_DT0_fpr(rd); 2750 + gen_op_store_DT0_fpr(DFPREG(rd));
2753 break; 2751 break;
2754 case 0x039: /* VIS I fmuld8ulx16 */ 2752 case 0x039: /* VIS I fmuld8ulx16 */
2755 - gen_op_load_fpr_DT0(rs1);  
2756 - gen_op_load_fpr_DT1(rs2); 2753 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2754 + gen_op_load_fpr_DT1(DFPREG(rs2));
2757 gen_op_fmuld8ulx16(); 2755 gen_op_fmuld8ulx16();
2758 - gen_op_store_DT0_fpr(rd); 2756 + gen_op_store_DT0_fpr(DFPREG(rd));
2759 break; 2757 break;
2760 case 0x03a: /* VIS I fpack32 */ 2758 case 0x03a: /* VIS I fpack32 */
2761 case 0x03b: /* VIS I fpack16 */ 2759 case 0x03b: /* VIS I fpack16 */
@@ -2764,31 +2762,31 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2764,31 +2762,31 @@ static void disas_sparc_insn(DisasContext * dc)
2764 // XXX 2762 // XXX
2765 goto illegal_insn; 2763 goto illegal_insn;
2766 case 0x048: /* VIS I faligndata */ 2764 case 0x048: /* VIS I faligndata */
2767 - gen_op_load_fpr_DT0(rs1);  
2768 - gen_op_load_fpr_DT1(rs2); 2765 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2766 + gen_op_load_fpr_DT1(DFPREG(rs2));
2769 gen_op_faligndata(); 2767 gen_op_faligndata();
2770 - gen_op_store_DT0_fpr(rd); 2768 + gen_op_store_DT0_fpr(DFPREG(rd));
2771 break; 2769 break;
2772 case 0x04b: /* VIS I fpmerge */ 2770 case 0x04b: /* VIS I fpmerge */
2773 - gen_op_load_fpr_DT0(rs1);  
2774 - gen_op_load_fpr_DT1(rs2); 2771 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2772 + gen_op_load_fpr_DT1(DFPREG(rs2));
2775 gen_op_fpmerge(); 2773 gen_op_fpmerge();
2776 - gen_op_store_DT0_fpr(rd); 2774 + gen_op_store_DT0_fpr(DFPREG(rd));
2777 break; 2775 break;
2778 case 0x04c: /* VIS II bshuffle */ 2776 case 0x04c: /* VIS II bshuffle */
2779 // XXX 2777 // XXX
2780 goto illegal_insn; 2778 goto illegal_insn;
2781 case 0x04d: /* VIS I fexpand */ 2779 case 0x04d: /* VIS I fexpand */
2782 - gen_op_load_fpr_DT0(rs1);  
2783 - gen_op_load_fpr_DT1(rs2); 2780 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2781 + gen_op_load_fpr_DT1(DFPREG(rs2));
2784 gen_op_fexpand(); 2782 gen_op_fexpand();
2785 - gen_op_store_DT0_fpr(rd); 2783 + gen_op_store_DT0_fpr(DFPREG(rd));
2786 break; 2784 break;
2787 case 0x050: /* VIS I fpadd16 */ 2785 case 0x050: /* VIS I fpadd16 */
2788 - gen_op_load_fpr_DT0(rs1);  
2789 - gen_op_load_fpr_DT1(rs2); 2786 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2787 + gen_op_load_fpr_DT1(DFPREG(rs2));
2790 gen_op_fpadd16(); 2788 gen_op_fpadd16();
2791 - gen_op_store_DT0_fpr(rd); 2789 + gen_op_store_DT0_fpr(DFPREG(rd));
2792 break; 2790 break;
2793 case 0x051: /* VIS I fpadd16s */ 2791 case 0x051: /* VIS I fpadd16s */
2794 gen_op_load_fpr_FT0(rs1); 2792 gen_op_load_fpr_FT0(rs1);
@@ -2797,10 +2795,10 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2797,10 +2795,10 @@ static void disas_sparc_insn(DisasContext * dc)
2797 gen_op_store_FT0_fpr(rd); 2795 gen_op_store_FT0_fpr(rd);
2798 break; 2796 break;
2799 case 0x052: /* VIS I fpadd32 */ 2797 case 0x052: /* VIS I fpadd32 */
2800 - gen_op_load_fpr_DT0(rs1);  
2801 - gen_op_load_fpr_DT1(rs2); 2798 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2799 + gen_op_load_fpr_DT1(DFPREG(rs2));
2802 gen_op_fpadd32(); 2800 gen_op_fpadd32();
2803 - gen_op_store_DT0_fpr(rd); 2801 + gen_op_store_DT0_fpr(DFPREG(rd));
2804 break; 2802 break;
2805 case 0x053: /* VIS I fpadd32s */ 2803 case 0x053: /* VIS I fpadd32s */
2806 gen_op_load_fpr_FT0(rs1); 2804 gen_op_load_fpr_FT0(rs1);
@@ -2809,10 +2807,10 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2809,10 +2807,10 @@ static void disas_sparc_insn(DisasContext * dc)
2809 gen_op_store_FT0_fpr(rd); 2807 gen_op_store_FT0_fpr(rd);
2810 break; 2808 break;
2811 case 0x054: /* VIS I fpsub16 */ 2809 case 0x054: /* VIS I fpsub16 */
2812 - gen_op_load_fpr_DT0(rs1);  
2813 - gen_op_load_fpr_DT1(rs2); 2810 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2811 + gen_op_load_fpr_DT1(DFPREG(rs2));
2814 gen_op_fpsub16(); 2812 gen_op_fpsub16();
2815 - gen_op_store_DT0_fpr(rd); 2813 + gen_op_store_DT0_fpr(DFPREG(rd));
2816 break; 2814 break;
2817 case 0x055: /* VIS I fpsub16s */ 2815 case 0x055: /* VIS I fpsub16s */
2818 gen_op_load_fpr_FT0(rs1); 2816 gen_op_load_fpr_FT0(rs1);
@@ -2821,10 +2819,10 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2821,10 +2819,10 @@ static void disas_sparc_insn(DisasContext * dc)
2821 gen_op_store_FT0_fpr(rd); 2819 gen_op_store_FT0_fpr(rd);
2822 break; 2820 break;
2823 case 0x056: /* VIS I fpsub32 */ 2821 case 0x056: /* VIS I fpsub32 */
2824 - gen_op_load_fpr_DT0(rs1);  
2825 - gen_op_load_fpr_DT1(rs2); 2822 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2823 + gen_op_load_fpr_DT1(DFPREG(rs2));
2826 gen_op_fpadd32(); 2824 gen_op_fpadd32();
2827 - gen_op_store_DT0_fpr(rd); 2825 + gen_op_store_DT0_fpr(DFPREG(rd));
2828 break; 2826 break;
2829 case 0x057: /* VIS I fpsub32s */ 2827 case 0x057: /* VIS I fpsub32s */
2830 gen_op_load_fpr_FT0(rs1); 2828 gen_op_load_fpr_FT0(rs1);
@@ -2834,17 +2832,17 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2834,17 +2832,17 @@ static void disas_sparc_insn(DisasContext * dc)
2834 break; 2832 break;
2835 case 0x060: /* VIS I fzero */ 2833 case 0x060: /* VIS I fzero */
2836 gen_op_movl_DT0_0(); 2834 gen_op_movl_DT0_0();
2837 - gen_op_store_DT0_fpr(rd); 2835 + gen_op_store_DT0_fpr(DFPREG(rd));
2838 break; 2836 break;
2839 case 0x061: /* VIS I fzeros */ 2837 case 0x061: /* VIS I fzeros */
2840 gen_op_movl_FT0_0(); 2838 gen_op_movl_FT0_0();
2841 gen_op_store_FT0_fpr(rd); 2839 gen_op_store_FT0_fpr(rd);
2842 break; 2840 break;
2843 case 0x062: /* VIS I fnor */ 2841 case 0x062: /* VIS I fnor */
2844 - gen_op_load_fpr_DT0(rs1);  
2845 - gen_op_load_fpr_DT1(rs2); 2842 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2843 + gen_op_load_fpr_DT1(DFPREG(rs2));
2846 gen_op_fnor(); 2844 gen_op_fnor();
2847 - gen_op_store_DT0_fpr(rd); 2845 + gen_op_store_DT0_fpr(DFPREG(rd));
2848 break; 2846 break;
2849 case 0x063: /* VIS I fnors */ 2847 case 0x063: /* VIS I fnors */
2850 gen_op_load_fpr_FT0(rs1); 2848 gen_op_load_fpr_FT0(rs1);
@@ -2853,10 +2851,10 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2853,10 +2851,10 @@ static void disas_sparc_insn(DisasContext * dc)
2853 gen_op_store_FT0_fpr(rd); 2851 gen_op_store_FT0_fpr(rd);
2854 break; 2852 break;
2855 case 0x064: /* VIS I fandnot2 */ 2853 case 0x064: /* VIS I fandnot2 */
2856 - gen_op_load_fpr_DT1(rs1);  
2857 - gen_op_load_fpr_DT0(rs2); 2854 + gen_op_load_fpr_DT1(DFPREG(rs1));
  2855 + gen_op_load_fpr_DT0(DFPREG(rs2));
2858 gen_op_fandnot(); 2856 gen_op_fandnot();
2859 - gen_op_store_DT0_fpr(rd); 2857 + gen_op_store_DT0_fpr(DFPREG(rd));
2860 break; 2858 break;
2861 case 0x065: /* VIS I fandnot2s */ 2859 case 0x065: /* VIS I fandnot2s */
2862 gen_op_load_fpr_FT1(rs1); 2860 gen_op_load_fpr_FT1(rs1);
@@ -2865,9 +2863,9 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2865,9 +2863,9 @@ static void disas_sparc_insn(DisasContext * dc)
2865 gen_op_store_FT0_fpr(rd); 2863 gen_op_store_FT0_fpr(rd);
2866 break; 2864 break;
2867 case 0x066: /* VIS I fnot2 */ 2865 case 0x066: /* VIS I fnot2 */
2868 - gen_op_load_fpr_DT1(rs2); 2866 + gen_op_load_fpr_DT1(DFPREG(rs2));
2869 gen_op_fnot(); 2867 gen_op_fnot();
2870 - gen_op_store_DT0_fpr(rd); 2868 + gen_op_store_DT0_fpr(DFPREG(rd));
2871 break; 2869 break;
2872 case 0x067: /* VIS I fnot2s */ 2870 case 0x067: /* VIS I fnot2s */
2873 gen_op_load_fpr_FT1(rs2); 2871 gen_op_load_fpr_FT1(rs2);
@@ -2875,10 +2873,10 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2875,10 +2873,10 @@ static void disas_sparc_insn(DisasContext * dc)
2875 gen_op_store_FT0_fpr(rd); 2873 gen_op_store_FT0_fpr(rd);
2876 break; 2874 break;
2877 case 0x068: /* VIS I fandnot1 */ 2875 case 0x068: /* VIS I fandnot1 */
2878 - gen_op_load_fpr_DT0(rs1);  
2879 - gen_op_load_fpr_DT1(rs2); 2876 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2877 + gen_op_load_fpr_DT1(DFPREG(rs2));
2880 gen_op_fandnot(); 2878 gen_op_fandnot();
2881 - gen_op_store_DT0_fpr(rd); 2879 + gen_op_store_DT0_fpr(DFPREG(rd));
2882 break; 2880 break;
2883 case 0x069: /* VIS I fandnot1s */ 2881 case 0x069: /* VIS I fandnot1s */
2884 gen_op_load_fpr_FT0(rs1); 2882 gen_op_load_fpr_FT0(rs1);
@@ -2887,9 +2885,9 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2887,9 +2885,9 @@ static void disas_sparc_insn(DisasContext * dc)
2887 gen_op_store_FT0_fpr(rd); 2885 gen_op_store_FT0_fpr(rd);
2888 break; 2886 break;
2889 case 0x06a: /* VIS I fnot1 */ 2887 case 0x06a: /* VIS I fnot1 */
2890 - gen_op_load_fpr_DT1(rs1); 2888 + gen_op_load_fpr_DT1(DFPREG(rs1));
2891 gen_op_fnot(); 2889 gen_op_fnot();
2892 - gen_op_store_DT0_fpr(rd); 2890 + gen_op_store_DT0_fpr(DFPREG(rd));
2893 break; 2891 break;
2894 case 0x06b: /* VIS I fnot1s */ 2892 case 0x06b: /* VIS I fnot1s */
2895 gen_op_load_fpr_FT1(rs1); 2893 gen_op_load_fpr_FT1(rs1);
@@ -2897,10 +2895,10 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2897,10 +2895,10 @@ static void disas_sparc_insn(DisasContext * dc)
2897 gen_op_store_FT0_fpr(rd); 2895 gen_op_store_FT0_fpr(rd);
2898 break; 2896 break;
2899 case 0x06c: /* VIS I fxor */ 2897 case 0x06c: /* VIS I fxor */
2900 - gen_op_load_fpr_DT0(rs1);  
2901 - gen_op_load_fpr_DT1(rs2); 2898 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2899 + gen_op_load_fpr_DT1(DFPREG(rs2));
2902 gen_op_fxor(); 2900 gen_op_fxor();
2903 - gen_op_store_DT0_fpr(rd); 2901 + gen_op_store_DT0_fpr(DFPREG(rd));
2904 break; 2902 break;
2905 case 0x06d: /* VIS I fxors */ 2903 case 0x06d: /* VIS I fxors */
2906 gen_op_load_fpr_FT0(rs1); 2904 gen_op_load_fpr_FT0(rs1);
@@ -2909,10 +2907,10 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2909,10 +2907,10 @@ static void disas_sparc_insn(DisasContext * dc)
2909 gen_op_store_FT0_fpr(rd); 2907 gen_op_store_FT0_fpr(rd);
2910 break; 2908 break;
2911 case 0x06e: /* VIS I fnand */ 2909 case 0x06e: /* VIS I fnand */
2912 - gen_op_load_fpr_DT0(rs1);  
2913 - gen_op_load_fpr_DT1(rs2); 2910 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2911 + gen_op_load_fpr_DT1(DFPREG(rs2));
2914 gen_op_fnand(); 2912 gen_op_fnand();
2915 - gen_op_store_DT0_fpr(rd); 2913 + gen_op_store_DT0_fpr(DFPREG(rd));
2916 break; 2914 break;
2917 case 0x06f: /* VIS I fnands */ 2915 case 0x06f: /* VIS I fnands */
2918 gen_op_load_fpr_FT0(rs1); 2916 gen_op_load_fpr_FT0(rs1);
@@ -2921,10 +2919,10 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2921,10 +2919,10 @@ static void disas_sparc_insn(DisasContext * dc)
2921 gen_op_store_FT0_fpr(rd); 2919 gen_op_store_FT0_fpr(rd);
2922 break; 2920 break;
2923 case 0x070: /* VIS I fand */ 2921 case 0x070: /* VIS I fand */
2924 - gen_op_load_fpr_DT0(rs1);  
2925 - gen_op_load_fpr_DT1(rs2); 2922 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2923 + gen_op_load_fpr_DT1(DFPREG(rs2));
2926 gen_op_fand(); 2924 gen_op_fand();
2927 - gen_op_store_DT0_fpr(rd); 2925 + gen_op_store_DT0_fpr(DFPREG(rd));
2928 break; 2926 break;
2929 case 0x071: /* VIS I fands */ 2927 case 0x071: /* VIS I fands */
2930 gen_op_load_fpr_FT0(rs1); 2928 gen_op_load_fpr_FT0(rs1);
@@ -2933,10 +2931,10 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2933,10 +2931,10 @@ static void disas_sparc_insn(DisasContext * dc)
2933 gen_op_store_FT0_fpr(rd); 2931 gen_op_store_FT0_fpr(rd);
2934 break; 2932 break;
2935 case 0x072: /* VIS I fxnor */ 2933 case 0x072: /* VIS I fxnor */
2936 - gen_op_load_fpr_DT0(rs1);  
2937 - gen_op_load_fpr_DT1(rs2); 2934 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2935 + gen_op_load_fpr_DT1(DFPREG(rs2));
2938 gen_op_fxnor(); 2936 gen_op_fxnor();
2939 - gen_op_store_DT0_fpr(rd); 2937 + gen_op_store_DT0_fpr(DFPREG(rd));
2940 break; 2938 break;
2941 case 0x073: /* VIS I fxnors */ 2939 case 0x073: /* VIS I fxnors */
2942 gen_op_load_fpr_FT0(rs1); 2940 gen_op_load_fpr_FT0(rs1);
@@ -2945,18 +2943,18 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2945,18 +2943,18 @@ static void disas_sparc_insn(DisasContext * dc)
2945 gen_op_store_FT0_fpr(rd); 2943 gen_op_store_FT0_fpr(rd);
2946 break; 2944 break;
2947 case 0x074: /* VIS I fsrc1 */ 2945 case 0x074: /* VIS I fsrc1 */
2948 - gen_op_load_fpr_DT0(rs1);  
2949 - gen_op_store_DT0_fpr(rd); 2946 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2947 + gen_op_store_DT0_fpr(DFPREG(rd));
2950 break; 2948 break;
2951 case 0x075: /* VIS I fsrc1s */ 2949 case 0x075: /* VIS I fsrc1s */
2952 gen_op_load_fpr_FT0(rs1); 2950 gen_op_load_fpr_FT0(rs1);
2953 gen_op_store_FT0_fpr(rd); 2951 gen_op_store_FT0_fpr(rd);
2954 break; 2952 break;
2955 case 0x076: /* VIS I fornot2 */ 2953 case 0x076: /* VIS I fornot2 */
2956 - gen_op_load_fpr_DT1(rs1);  
2957 - gen_op_load_fpr_DT0(rs2); 2954 + gen_op_load_fpr_DT1(DFPREG(rs1));
  2955 + gen_op_load_fpr_DT0(DFPREG(rs2));
2958 gen_op_fornot(); 2956 gen_op_fornot();
2959 - gen_op_store_DT0_fpr(rd); 2957 + gen_op_store_DT0_fpr(DFPREG(rd));
2960 break; 2958 break;
2961 case 0x077: /* VIS I fornot2s */ 2959 case 0x077: /* VIS I fornot2s */
2962 gen_op_load_fpr_FT1(rs1); 2960 gen_op_load_fpr_FT1(rs1);
@@ -2965,18 +2963,18 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2965,18 +2963,18 @@ static void disas_sparc_insn(DisasContext * dc)
2965 gen_op_store_FT0_fpr(rd); 2963 gen_op_store_FT0_fpr(rd);
2966 break; 2964 break;
2967 case 0x078: /* VIS I fsrc2 */ 2965 case 0x078: /* VIS I fsrc2 */
2968 - gen_op_load_fpr_DT0(rs2);  
2969 - gen_op_store_DT0_fpr(rd); 2966 + gen_op_load_fpr_DT0(DFPREG(rs2));
  2967 + gen_op_store_DT0_fpr(DFPREG(rd));
2970 break; 2968 break;
2971 case 0x079: /* VIS I fsrc2s */ 2969 case 0x079: /* VIS I fsrc2s */
2972 gen_op_load_fpr_FT0(rs2); 2970 gen_op_load_fpr_FT0(rs2);
2973 gen_op_store_FT0_fpr(rd); 2971 gen_op_store_FT0_fpr(rd);
2974 break; 2972 break;
2975 case 0x07a: /* VIS I fornot1 */ 2973 case 0x07a: /* VIS I fornot1 */
2976 - gen_op_load_fpr_DT0(rs1);  
2977 - gen_op_load_fpr_DT1(rs2); 2974 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2975 + gen_op_load_fpr_DT1(DFPREG(rs2));
2978 gen_op_fornot(); 2976 gen_op_fornot();
2979 - gen_op_store_DT0_fpr(rd); 2977 + gen_op_store_DT0_fpr(DFPREG(rd));
2980 break; 2978 break;
2981 case 0x07b: /* VIS I fornot1s */ 2979 case 0x07b: /* VIS I fornot1s */
2982 gen_op_load_fpr_FT0(rs1); 2980 gen_op_load_fpr_FT0(rs1);
@@ -2985,10 +2983,10 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2985,10 +2983,10 @@ static void disas_sparc_insn(DisasContext * dc)
2985 gen_op_store_FT0_fpr(rd); 2983 gen_op_store_FT0_fpr(rd);
2986 break; 2984 break;
2987 case 0x07c: /* VIS I for */ 2985 case 0x07c: /* VIS I for */
2988 - gen_op_load_fpr_DT0(rs1);  
2989 - gen_op_load_fpr_DT1(rs2); 2986 + gen_op_load_fpr_DT0(DFPREG(rs1));
  2987 + gen_op_load_fpr_DT1(DFPREG(rs2));
2990 gen_op_for(); 2988 gen_op_for();
2991 - gen_op_store_DT0_fpr(rd); 2989 + gen_op_store_DT0_fpr(DFPREG(rd));
2992 break; 2990 break;
2993 case 0x07d: /* VIS I fors */ 2991 case 0x07d: /* VIS I fors */
2994 gen_op_load_fpr_FT0(rs1); 2992 gen_op_load_fpr_FT0(rs1);
@@ -2998,7 +2996,7 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2998,7 +2996,7 @@ static void disas_sparc_insn(DisasContext * dc)
2998 break; 2996 break;
2999 case 0x07e: /* VIS I fone */ 2997 case 0x07e: /* VIS I fone */
3000 gen_op_movl_DT0_1(); 2998 gen_op_movl_DT0_1();
3001 - gen_op_store_DT0_fpr(rd); 2999 + gen_op_store_DT0_fpr(DFPREG(rd));
3002 break; 3000 break;
3003 case 0x07f: /* VIS I fones */ 3001 case 0x07f: /* VIS I fones */
3004 gen_op_movl_FT0_1(); 3002 gen_op_movl_FT0_1();
@@ -3339,18 +3337,18 @@ static void disas_sparc_insn(DisasContext * dc) @@ -3339,18 +3337,18 @@ static void disas_sparc_insn(DisasContext * dc)
3339 goto skip_move; 3337 goto skip_move;
3340 case 0x30: /* V9 ldfa */ 3338 case 0x30: /* V9 ldfa */
3341 gen_op_check_align_T0_3(); 3339 gen_op_check_align_T0_3();
3342 - gen_ldf_asi(insn, 4); 3340 + gen_ldf_asi(insn, 4, rd);
3343 goto skip_move; 3341 goto skip_move;
3344 case 0x33: /* V9 lddfa */ 3342 case 0x33: /* V9 lddfa */
3345 gen_op_check_align_T0_3(); 3343 gen_op_check_align_T0_3();
3346 - gen_ldf_asi(insn, 8); 3344 + gen_ldf_asi(insn, 8, DFPREG(rd));
3347 goto skip_move; 3345 goto skip_move;
3348 case 0x3d: /* V9 prefetcha, no effect */ 3346 case 0x3d: /* V9 prefetcha, no effect */
3349 goto skip_move; 3347 goto skip_move;
3350 case 0x32: /* V9 ldqfa */ 3348 case 0x32: /* V9 ldqfa */
3351 #if defined(CONFIG_USER_ONLY) 3349 #if defined(CONFIG_USER_ONLY)
3352 gen_op_check_align_T0_3(); 3350 gen_op_check_align_T0_3();
3353 - gen_ldf_asi(insn, 16); 3351 + gen_ldf_asi(insn, 16, QFPREG(rd));
3354 goto skip_move; 3352 goto skip_move;
3355 #else 3353 #else
3356 goto nfpu_insn; 3354 goto nfpu_insn;
@@ -3528,13 +3526,13 @@ static void disas_sparc_insn(DisasContext * dc) @@ -3528,13 +3526,13 @@ static void disas_sparc_insn(DisasContext * dc)
3528 case 0x34: /* V9 stfa */ 3526 case 0x34: /* V9 stfa */
3529 gen_op_check_align_T0_3(); 3527 gen_op_check_align_T0_3();
3530 gen_op_load_fpr_FT0(rd); 3528 gen_op_load_fpr_FT0(rd);
3531 - gen_stf_asi(insn, 4); 3529 + gen_stf_asi(insn, 4, rd);
3532 break; 3530 break;
3533 case 0x36: /* V9 stqfa */ 3531 case 0x36: /* V9 stqfa */
3534 #if defined(CONFIG_USER_ONLY) 3532 #if defined(CONFIG_USER_ONLY)
3535 gen_op_check_align_T0_7(); 3533 gen_op_check_align_T0_7();
3536 gen_op_load_fpr_QT0(QFPREG(rd)); 3534 gen_op_load_fpr_QT0(QFPREG(rd));
3537 - gen_stf_asi(insn, 16); 3535 + gen_stf_asi(insn, 16, QFPREG(rd));
3538 break; 3536 break;
3539 #else 3537 #else
3540 goto nfpu_insn; 3538 goto nfpu_insn;
@@ -3542,7 +3540,7 @@ static void disas_sparc_insn(DisasContext * dc) @@ -3542,7 +3540,7 @@ static void disas_sparc_insn(DisasContext * dc)
3542 case 0x37: /* V9 stdfa */ 3540 case 0x37: /* V9 stdfa */
3543 gen_op_check_align_T0_3(); 3541 gen_op_check_align_T0_3();
3544 gen_op_load_fpr_DT0(DFPREG(rd)); 3542 gen_op_load_fpr_DT0(DFPREG(rd));
3545 - gen_stf_asi(insn, 8); 3543 + gen_stf_asi(insn, 8, DFPREG(rd));
3546 break; 3544 break;
3547 case 0x3c: /* V9 casa */ 3545 case 0x3c: /* V9 casa */
3548 gen_op_check_align_T0_3(); 3546 gen_op_check_align_T0_3();