Revision 7da76bce target-sh4/translate.c
b/target-sh4/translate.c | ||
---|---|---|
390 | 390 |
return; |
391 | 391 |
case 0x2004: /* mov.b Rm,@-Rn */ |
392 | 392 |
gen_op_movl_rN_T0(REG(B7_4)); |
393 |
gen_op_dec1_rN(REG(B11_8)); |
|
393 |
gen_op_dec1_rN(REG(B11_8)); /* modify register status */
|
|
394 | 394 |
gen_op_movl_rN_T1(REG(B11_8)); |
395 |
gen_op_stb_T0_T1(ctx); |
|
395 |
gen_op_inc1_rN(REG(B11_8)); /* recover register status */ |
|
396 |
gen_op_stb_T0_T1(ctx); /* might cause re-execution */ |
|
397 |
gen_op_dec1_rN(REG(B11_8)); /* modify register status */ |
|
396 | 398 |
return; |
397 | 399 |
case 0x2005: /* mov.w Rm,@-Rn */ |
398 | 400 |
gen_op_movl_rN_T0(REG(B7_4)); |
399 | 401 |
gen_op_dec2_rN(REG(B11_8)); |
400 | 402 |
gen_op_movl_rN_T1(REG(B11_8)); |
403 |
gen_op_inc2_rN(REG(B11_8)); |
|
401 | 404 |
gen_op_stw_T0_T1(ctx); |
405 |
gen_op_dec2_rN(REG(B11_8)); |
|
402 | 406 |
return; |
403 | 407 |
case 0x2006: /* mov.l Rm,@-Rn */ |
404 | 408 |
gen_op_movl_rN_T0(REG(B7_4)); |
405 | 409 |
gen_op_dec4_rN(REG(B11_8)); |
406 | 410 |
gen_op_movl_rN_T1(REG(B11_8)); |
411 |
gen_op_inc4_rN(REG(B11_8)); |
|
407 | 412 |
gen_op_stl_T0_T1(ctx); |
413 |
gen_op_dec4_rN(REG(B11_8)); |
|
408 | 414 |
return; |
409 | 415 |
case 0x6004: /* mov.b @Rm+,Rn */ |
410 | 416 |
gen_op_movl_rN_T0(REG(B7_4)); |
... | ... | |
570 | 576 |
gen_op_movl_rN_T0(REG(B11_8)); |
571 | 577 |
gen_op_ldl_T0_T0(ctx); |
572 | 578 |
gen_op_movl_T0_T1(); |
573 |
gen_op_inc4_rN(REG(B11_8)); |
|
574 | 579 |
gen_op_movl_rN_T0(REG(B7_4)); |
575 | 580 |
gen_op_ldl_T0_T0(ctx); |
576 | 581 |
gen_op_macl_T0_T1(); |
582 |
gen_op_inc4_rN(REG(B11_8)); |
|
577 | 583 |
gen_op_inc4_rN(REG(B7_4)); |
578 | 584 |
return; |
579 | 585 |
case 0x400f: /* mac.w @Rm+,@Rn+ */ |
580 | 586 |
gen_op_movl_rN_T0(REG(B11_8)); |
581 | 587 |
gen_op_ldl_T0_T0(ctx); |
582 | 588 |
gen_op_movl_T0_T1(); |
583 |
gen_op_inc2_rN(REG(B11_8)); |
|
584 | 589 |
gen_op_movl_rN_T0(REG(B7_4)); |
585 | 590 |
gen_op_ldl_T0_T0(ctx); |
586 | 591 |
gen_op_macw_T0_T1(); |
592 |
gen_op_inc2_rN(REG(B11_8)); |
|
587 | 593 |
gen_op_inc2_rN(REG(B7_4)); |
588 | 594 |
return; |
589 | 595 |
case 0x0007: /* mul.l Rm,Rn */ |
... | ... | |
706 | 712 |
gen_op_dec8_rN(REG(B11_8)); |
707 | 713 |
gen_op_fmov_drN_DT0(XREG(B7_4)); |
708 | 714 |
gen_op_movl_rN_T1(REG(B11_8)); |
715 |
gen_op_inc8_rN(REG(B11_8)); |
|
709 | 716 |
gen_op_stfq_DT0_T1(ctx); |
717 |
gen_op_dec8_rN(REG(B11_8)); |
|
710 | 718 |
} else { |
711 | 719 |
gen_op_dec4_rN(REG(B11_8)); |
712 | 720 |
gen_op_fmov_frN_FT0(FREG(B7_4)); |
713 | 721 |
gen_op_movl_rN_T1(REG(B11_8)); |
722 |
gen_op_inc4_rN(REG(B11_8)); |
|
714 | 723 |
gen_op_stfl_FT0_T1(ctx); |
724 |
gen_op_dec4_rN(REG(B11_8)); |
|
715 | 725 |
} |
716 | 726 |
return; |
717 | 727 |
case 0xf006: /* fmov @(R0,Rm),{F,D,X}Rm - FPSCR: Nothing */ |
... | ... | |
947 | 957 |
gen_op_dec4_rN(REG(B11_8)); |
948 | 958 |
gen_op_movl_rN_T1(REG(B11_8)); |
949 | 959 |
gen_op_movl_rN_T0(ALTREG(B6_4)); |
960 |
gen_op_inc4_rN(REG(B11_8)); |
|
950 | 961 |
gen_op_stl_T0_T1(ctx); |
962 |
gen_op_dec4_rN(REG(B11_8)); |
|
951 | 963 |
return; |
952 | 964 |
} |
953 | 965 |
|
... | ... | |
1008 | 1020 |
gen_op_##stop##_##reg##_T0 (); \ |
1009 | 1021 |
gen_op_dec4_rN (REG(B11_8)); \ |
1010 | 1022 |
gen_op_movl_rN_T1 (REG(B11_8)); \ |
1023 |
gen_op_inc4_rN (REG(B11_8)); \ |
|
1011 | 1024 |
gen_op_stl_T0_T1 (ctx); \ |
1025 |
gen_op_dec4_rN (REG(B11_8)); \ |
|
1012 | 1026 |
return; |
1013 | 1027 |
LDST(sr, 0x400e, 0x4007, ldc, 0x0002, 0x4003, stc, ctx->bstate = |
1014 | 1028 |
BS_STOP;) |
Also available in: Unified diff