Revision e67888a7

b/target-sh4/translate.c
647 647
	gen_op_movl_rN_T0(REG(B7_4));
648 648
	gen_op_xor_T0_rN(REG(B11_8));
649 649
	return;
650
    case 0xf00c:		/* fmov {F,D,X}Rm,{F,D,X}Rn */
650
    case 0xf00c: /* fmov {F,D,X}Rm,{F,D,X}Rn - FPSCR: Nothing */
651 651
	if (ctx->fpscr & FPSCR_PR) {
652 652
	    gen_op_fmov_drN_DT0(XREG(B7_4));
653 653
	    gen_op_fmov_DT0_drN(XREG(B11_8));
......
661 661
	    gen_op_fmov_FT0_frN(FREG(B11_8));
662 662
	}
663 663
	return;
664
    case 0xf00a:		/* fmov {F,D,X}Rm,@Rn */
664
    case 0xf00a: /* fmov {F,D,X}Rm,@Rn - FPSCR: Nothing */
665 665
	if (ctx->fpscr & FPSCR_PR) {
666 666
	    gen_op_fmov_drN_DT0(XREG(B7_4));
667 667
	    gen_op_movl_rN_T1(REG(B11_8));
......
678 678
	    gen_op_stfl_FT0_T1(ctx);
679 679
	}
680 680
	return;
681
    case 0xf008:		/* fmov @Rm,{F,D,X}Rn */
681
    case 0xf008: /* fmov @Rm,{F,D,X}Rn - FPSCR: Nothing */
682 682
	if (ctx->fpscr & FPSCR_PR) {
683 683
	    gen_op_movl_rN_T0(REG(B7_4));
684 684
	    gen_op_ldfq_T0_DT0(ctx);
......
695 695
	    gen_op_fmov_FT0_frN(FREG(B11_8));
696 696
	}
697 697
	return;
698
    case 0xf009:		/* fmov @Rm+,{F,D,X}Rn */
698
    case 0xf009: /* fmov @Rm+,{F,D,X}Rn - FPSCR: Nothing */
699 699
	if (ctx->fpscr & FPSCR_PR) {
700 700
	    gen_op_movl_rN_T0(REG(B7_4));
701 701
	    gen_op_ldfq_T0_DT0(ctx);
......
715 715
	    gen_op_inc4_rN(REG(B7_4));
716 716
	}
717 717
	return;
718
    case 0xf00b:		/* fmov {F,D,X}Rm,@-Rn */
718
    case 0xf00b: /* fmov {F,D,X}Rm,@-Rn - FPSCR: Nothing */
719 719
	if (ctx->fpscr & FPSCR_PR) {
720 720
	    gen_op_dec8_rN(REG(B11_8));
721 721
	    gen_op_fmov_drN_DT0(XREG(B7_4));
......
735 735
	    gen_op_stfl_FT0_T1(ctx);
736 736
	}
737 737
	return;
738
    case 0xf006:		/* fmov @(R0,Rm),{F,D,X}Rm */
738
    case 0xf006: /* fmov @(R0,Rm),{F,D,X}Rm - FPSCR: Nothing */
739 739
	if (ctx->fpscr & FPSCR_PR) {
740 740
	    gen_op_movl_rN_T0(REG(B7_4));
741 741
	    gen_op_add_rN_T0(REG(0));
......
755 755
	    gen_op_fmov_FT0_frN(FREG(B11_8));
756 756
	}
757 757
	return;
758
    case 0xf007:		/* fmov {F,D,X}Rn,@(R0,Rn) */
758
    case 0xf007: /* fmov {F,D,X}Rn,@(R0,Rn) - FPSCR: Nothing */
759 759
	if (ctx->fpscr & FPSCR_PR) {
760 760
	    gen_op_fmov_drN_DT0(XREG(B7_4));
761 761
	    gen_op_movl_rN_T1(REG(B11_8));
......
775 775
	    gen_op_stfl_FT0_T1(ctx);
776 776
	}
777 777
	return;
778
    case 0xf000:		/* fadd Rm,Rn */
779
    case 0xf001:		/* fsub Rm,Rn */
780
    case 0xf002:		/* fmul Rm,Rn */
781
    case 0xf003:		/* fdiv Rm,Rn */
782
    case 0xf004:		/* fcmp/eq Rm,Rn */
783
    case 0xf005:		/* fcmp/gt Rm,Rn */
778
    case 0xf000: /* fadd Rm,Rn - FPSCR: R[PR,Enable.O/U/I]/W[Cause,Flag] */
779
    case 0xf001: /* fsub Rm,Rn - FPSCR: R[PR,Enable.O/U/I]/W[Cause,Flag] */
780
    case 0xf002: /* fmul Rm,Rn - FPSCR: R[PR,Enable.O/U/I]/W[Cause,Flag] */
781
    case 0xf003: /* fdiv Rm,Rn - FPSCR: R[PR,Enable.O/U/I]/W[Cause,Flag] */
782
    case 0xf004: /* fcmp/eq Rm,Rn - FPSCR: R[PR,Enable.V]/W[Cause,Flag] */
783
    case 0xf005: /* fcmp/gt Rm,Rn - FPSCR: R[PR,Enable.V]/W[Cause,Flag] */
784 784
	if (ctx->fpscr & FPSCR_PR) {
785 785
	    if (ctx->opcode & 0x0110)
786 786
		break; /* illegal instruction */
......
1121 1121
    case 0x401b:		/* tas.b @Rn */
1122 1122
	gen_op_tasb_rN(REG(B11_8));
1123 1123
	return;
1124
    case 0xf00d:		/* fsts FPUL,FRn */
1124
    case 0xf00d: /* fsts FPUL,FRn - FPSCR: Nothing */
1125 1125
	gen_op_movl_fpul_FT0();
1126 1126
	gen_op_fmov_FT0_frN(FREG(B11_8));
1127 1127
	return;
1128
    case 0xf01d:		/* flds FRm.FPUL */
1128
    case 0xf01d: /* flds FRm,FPUL - FPSCR: Nothing */
1129 1129
	gen_op_fmov_frN_FT0(FREG(B11_8));
1130 1130
	gen_op_movl_FT0_fpul();
1131 1131
	return;
1132
    case 0xf02d:		/* float FPUL,FRn/DRn */
1132
    case 0xf02d: /* float FPUL,FRn/DRn - FPSCR: R[PR,Enable.I]/W[Cause,Flag] */
1133 1133
	if (ctx->fpscr & FPSCR_PR) {
1134 1134
	    if (ctx->opcode & 0x0100)
1135 1135
		break; /* illegal instruction */
......
1141 1141
	    gen_op_fmov_FT0_frN(FREG(B11_8));
1142 1142
	}
1143 1143
	return;
1144
    case 0xf03d:		/* ftrc FRm/DRm,FPUL */
1144
    case 0xf03d: /* ftrc FRm/DRm,FPUL - FPSCR: R[PR,Enable.V]/W[Cause,Flag] */
1145 1145
	if (ctx->fpscr & FPSCR_PR) {
1146 1146
	    if (ctx->opcode & 0x0100)
1147 1147
		break; /* illegal instruction */
......
1153 1153
	    gen_op_ftrc_FT();
1154 1154
	}
1155 1155
	return;
1156
    case 0xf08d:		/* fldi0 FRn */
1156
    case 0xf08d: /* fldi0 FRn - FPSCR: R[PR] */
1157 1157
	if (!(ctx->fpscr & FPSCR_PR)) {
1158 1158
	    gen_op_movl_imm_T0(0);
1159 1159
	    gen_op_fmov_T0_frN(FREG(B11_8));
1160 1160
	    return;
1161 1161
	}
1162 1162
	break;
1163
    case 0xf09d:		/* fldi1 FRn */
1163
    case 0xf09d: /* fldi1 FRn - FPSCR: R[PR] */
1164 1164
	if (!(ctx->fpscr & FPSCR_PR)) {
1165 1165
	    gen_op_movl_imm_T0(0x3f800000);
1166 1166
	    gen_op_fmov_T0_frN(FREG(B11_8));

Also available in: Unified diff