Commit 2fdbad255e73c7422dacd43bd0d2e627270104de
1 parent
9507fb52
TCG fixes for target-mips
This patch fixes TCG errors reported on the MIPS target when TCG_DEBUG is enabled. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> Acked-by: Thiemo Seufer <ths@networkno.de> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5164 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
27 additions
and
26 deletions
target-mips/translate.c
| ... | ... | @@ -427,7 +427,8 @@ static TCGv cpu_env, bcond, btarget, current_fpu; |
| 427 | 427 | |
| 428 | 428 | #include "gen-icount.h" |
| 429 | 429 | |
| 430 | -static inline void tcg_gen_helper_0_i(void *func, TCGv arg) | |
| 430 | +static inline void tcg_gen_helper_0_i(void *func, uint32_t arg) | |
| 431 | + | |
| 431 | 432 | { |
| 432 | 433 | TCGv tmp = tcg_const_i32(arg); |
| 433 | 434 | |
| ... | ... | @@ -435,7 +436,7 @@ static inline void tcg_gen_helper_0_i(void *func, TCGv arg) |
| 435 | 436 | tcg_temp_free(tmp); |
| 436 | 437 | } |
| 437 | 438 | |
| 438 | -static inline void tcg_gen_helper_0_ii(void *func, TCGv arg1, TCGv arg2) | |
| 439 | +static inline void tcg_gen_helper_0_ii(void *func, uint32_t arg1, uint32_t arg2) | |
| 439 | 440 | { |
| 440 | 441 | TCGv tmp1 = tcg_const_i32(arg1); |
| 441 | 442 | TCGv tmp2 = tcg_const_i32(arg2); |
| ... | ... | @@ -445,7 +446,7 @@ static inline void tcg_gen_helper_0_ii(void *func, TCGv arg1, TCGv arg2) |
| 445 | 446 | tcg_temp_free(tmp2); |
| 446 | 447 | } |
| 447 | 448 | |
| 448 | -static inline void tcg_gen_helper_0_1i(void *func, TCGv arg1, TCGv arg2) | |
| 449 | +static inline void tcg_gen_helper_0_1i(void *func, TCGv arg1, uint32_t arg2) | |
| 449 | 450 | { |
| 450 | 451 | TCGv tmp = tcg_const_i32(arg2); |
| 451 | 452 | |
| ... | ... | @@ -453,7 +454,7 @@ static inline void tcg_gen_helper_0_1i(void *func, TCGv arg1, TCGv arg2) |
| 453 | 454 | tcg_temp_free(tmp); |
| 454 | 455 | } |
| 455 | 456 | |
| 456 | -static inline void tcg_gen_helper_0_2i(void *func, TCGv arg1, TCGv arg2, TCGv arg3) | |
| 457 | +static inline void tcg_gen_helper_0_2i(void *func, TCGv arg1, TCGv arg2, uint32_t arg3) | |
| 457 | 458 | { |
| 458 | 459 | TCGv tmp = tcg_const_i32(arg3); |
| 459 | 460 | |
| ... | ... | @@ -461,7 +462,7 @@ static inline void tcg_gen_helper_0_2i(void *func, TCGv arg1, TCGv arg2, TCGv ar |
| 461 | 462 | tcg_temp_free(tmp); |
| 462 | 463 | } |
| 463 | 464 | |
| 464 | -static inline void tcg_gen_helper_0_1ii(void *func, TCGv arg1, TCGv arg2, TCGv arg3) | |
| 465 | +static inline void tcg_gen_helper_0_1ii(void *func, TCGv arg1, uint32_t arg2, uint32_t arg3) | |
| 465 | 466 | { |
| 466 | 467 | TCGv tmp1 = tcg_const_i32(arg2); |
| 467 | 468 | TCGv tmp2 = tcg_const_i32(arg3); |
| ... | ... | @@ -471,7 +472,7 @@ static inline void tcg_gen_helper_0_1ii(void *func, TCGv arg1, TCGv arg2, TCGv a |
| 471 | 472 | tcg_temp_free(tmp2); |
| 472 | 473 | } |
| 473 | 474 | |
| 474 | -static inline void tcg_gen_helper_1_i(void *func, TCGv ret, TCGv arg) | |
| 475 | +static inline void tcg_gen_helper_1_i(void *func, TCGv ret, uint32_t arg) | |
| 475 | 476 | { |
| 476 | 477 | TCGv tmp = tcg_const_i32(arg); |
| 477 | 478 | |
| ... | ... | @@ -479,7 +480,7 @@ static inline void tcg_gen_helper_1_i(void *func, TCGv ret, TCGv arg) |
| 479 | 480 | tcg_temp_free(tmp); |
| 480 | 481 | } |
| 481 | 482 | |
| 482 | -static inline void tcg_gen_helper_1_1i(void *func, TCGv ret, TCGv arg1, TCGv arg2) | |
| 483 | +static inline void tcg_gen_helper_1_1i(void *func, TCGv ret, TCGv arg1, uint32_t arg2) | |
| 483 | 484 | { |
| 484 | 485 | TCGv tmp = tcg_const_i32(arg2); |
| 485 | 486 | |
| ... | ... | @@ -487,7 +488,7 @@ static inline void tcg_gen_helper_1_1i(void *func, TCGv ret, TCGv arg1, TCGv arg |
| 487 | 488 | tcg_temp_free(tmp); |
| 488 | 489 | } |
| 489 | 490 | |
| 490 | -static inline void tcg_gen_helper_1_1ii(void *func, TCGv ret, TCGv arg1, TCGv arg2, TCGv arg3) | |
| 491 | +static inline void tcg_gen_helper_1_1ii(void *func, TCGv ret, TCGv arg1, uint32_t arg2, uint32_t arg3) | |
| 491 | 492 | { |
| 492 | 493 | TCGv tmp1 = tcg_const_i32(arg2); |
| 493 | 494 | TCGv tmp2 = tcg_const_i32(arg3); |
| ... | ... | @@ -497,7 +498,7 @@ static inline void tcg_gen_helper_1_1ii(void *func, TCGv ret, TCGv arg1, TCGv ar |
| 497 | 498 | tcg_temp_free(tmp2); |
| 498 | 499 | } |
| 499 | 500 | |
| 500 | -static inline void tcg_gen_helper_1_2i(void *func, TCGv ret, TCGv arg1, TCGv arg2, TCGv arg3) | |
| 501 | +static inline void tcg_gen_helper_1_2i(void *func, TCGv ret, TCGv arg1, TCGv arg2, uint32_t arg3) | |
| 501 | 502 | { |
| 502 | 503 | TCGv tmp = tcg_const_i32(arg3); |
| 503 | 504 | |
| ... | ... | @@ -505,7 +506,7 @@ static inline void tcg_gen_helper_1_2i(void *func, TCGv ret, TCGv arg1, TCGv arg |
| 505 | 506 | tcg_temp_free(tmp); |
| 506 | 507 | } |
| 507 | 508 | |
| 508 | -static inline void tcg_gen_helper_1_2ii(void *func, TCGv ret, TCGv arg1, TCGv arg2, TCGv arg3, TCGv arg4) | |
| 509 | +static inline void tcg_gen_helper_1_2ii(void *func, TCGv ret, TCGv arg1, TCGv arg2, uint32_t arg3, uint32_t arg4) | |
| 509 | 510 | { |
| 510 | 511 | TCGv tmp1 = tcg_const_i32(arg3); |
| 511 | 512 | TCGv tmp2 = tcg_const_i32(arg4); |
| ... | ... | @@ -722,7 +723,7 @@ static inline void get_fp_cond (TCGv t) |
| 722 | 723 | typedef void (fcmp_fun32)(uint32_t, uint32_t, int); |
| 723 | 724 | typedef void (fcmp_fun64)(uint64_t, uint64_t, int); |
| 724 | 725 | |
| 725 | -#define FOP_CONDS(fcmp_fun, type, arg0, arg1, fmt) \ | |
| 726 | +#define FOP_CONDS(fcmp_fun, type, fmt) \ | |
| 726 | 727 | static fcmp_fun * fcmp ## type ## _ ## fmt ## _table[16] = { \ |
| 727 | 728 | do_cmp ## type ## _ ## fmt ## _f, \ |
| 728 | 729 | do_cmp ## type ## _ ## fmt ## _un, \ |
| ... | ... | @@ -741,17 +742,17 @@ static fcmp_fun * fcmp ## type ## _ ## fmt ## _table[16] = { \ |
| 741 | 742 | do_cmp ## type ## _ ## fmt ## _le, \ |
| 742 | 743 | do_cmp ## type ## _ ## fmt ## _ngt, \ |
| 743 | 744 | }; \ |
| 744 | -static inline void gen_cmp ## type ## _ ## fmt(int n, arg0 a, arg1 b, int cc) \ | |
| 745 | +static inline void gen_cmp ## type ## _ ## fmt(int n, TCGv a, TCGv b, int cc) \ | |
| 745 | 746 | { \ |
| 746 | 747 | tcg_gen_helper_0_2i(fcmp ## type ## _ ## fmt ## _table[n], a, b, cc); \ |
| 747 | 748 | } |
| 748 | 749 | |
| 749 | -FOP_CONDS(fcmp_fun64, , uint64_t, uint64_t, d) | |
| 750 | -FOP_CONDS(fcmp_fun64, abs, uint64_t, uint64_t, d) | |
| 751 | -FOP_CONDS(fcmp_fun32, , uint32_t, uint32_t, s) | |
| 752 | -FOP_CONDS(fcmp_fun32, abs, uint32_t, uint32_t, s) | |
| 753 | -FOP_CONDS(fcmp_fun64, , uint64_t, uint64_t, ps) | |
| 754 | -FOP_CONDS(fcmp_fun64, abs, uint64_t, uint64_t, ps) | |
| 750 | +FOP_CONDS(fcmp_fun64, , d) | |
| 751 | +FOP_CONDS(fcmp_fun64, abs, d) | |
| 752 | +FOP_CONDS(fcmp_fun32, , s) | |
| 753 | +FOP_CONDS(fcmp_fun32, abs, s) | |
| 754 | +FOP_CONDS(fcmp_fun64, , ps) | |
| 755 | +FOP_CONDS(fcmp_fun64, abs, ps) | |
| 755 | 756 | #undef FOP_CONDS |
| 756 | 757 | |
| 757 | 758 | /* Tests */ |
| ... | ... | @@ -2498,7 +2499,7 @@ static void gen_compute_branch (DisasContext *ctx, uint32_t opc, |
| 2498 | 2499 | { |
| 2499 | 2500 | target_ulong btgt = -1; |
| 2500 | 2501 | int blink = 0; |
| 2501 | - int bcond = 0; | |
| 2502 | + int bcond_compute = 0; | |
| 2502 | 2503 | TCGv t0 = tcg_temp_local_new(TCG_TYPE_TL); |
| 2503 | 2504 | TCGv t1 = tcg_temp_local_new(TCG_TYPE_TL); |
| 2504 | 2505 | |
| ... | ... | @@ -2524,7 +2525,7 @@ static void gen_compute_branch (DisasContext *ctx, uint32_t opc, |
| 2524 | 2525 | if (rs != rt) { |
| 2525 | 2526 | gen_load_gpr(t0, rs); |
| 2526 | 2527 | gen_load_gpr(t1, rt); |
| 2527 | - bcond = 1; | |
| 2528 | + bcond_compute = 1; | |
| 2528 | 2529 | } |
| 2529 | 2530 | btgt = ctx->pc + 4 + offset; |
| 2530 | 2531 | break; |
| ... | ... | @@ -2543,7 +2544,7 @@ static void gen_compute_branch (DisasContext *ctx, uint32_t opc, |
| 2543 | 2544 | /* Compare to zero */ |
| 2544 | 2545 | if (rs != 0) { |
| 2545 | 2546 | gen_load_gpr(t0, rs); |
| 2546 | - bcond = 1; | |
| 2547 | + bcond_compute = 1; | |
| 2547 | 2548 | } |
| 2548 | 2549 | btgt = ctx->pc + 4 + offset; |
| 2549 | 2550 | break; |
| ... | ... | @@ -2569,7 +2570,7 @@ static void gen_compute_branch (DisasContext *ctx, uint32_t opc, |
| 2569 | 2570 | generate_exception(ctx, EXCP_RI); |
| 2570 | 2571 | goto out; |
| 2571 | 2572 | } |
| 2572 | - if (bcond == 0) { | |
| 2573 | + if (bcond_compute == 0) { | |
| 2573 | 2574 | /* No condition to be computed */ |
| 2574 | 2575 | switch (opc) { |
| 2575 | 2576 | case OPC_BEQ: /* rx == rx */ |
| ... | ... | @@ -6045,7 +6046,7 @@ static inline void gen_movcf_s (int fs, int fd, int cc, int tf) |
| 6045 | 6046 | tcg_gen_ld_i32(r_tmp1, current_fpu, offsetof(CPUMIPSFPUContext, fcr31)); |
| 6046 | 6047 | tcg_gen_andi_i32(r_tmp1, r_tmp1, ccbit); |
| 6047 | 6048 | tcg_gen_brcondi_i32(cond, r_tmp1, 0, l1); |
| 6048 | - tcg_gen_movi_i32(fp1, fp0); | |
| 6049 | + tcg_gen_mov_i32(fp1, fp0); | |
| 6049 | 6050 | tcg_temp_free(fp0); |
| 6050 | 6051 | gen_set_label(l1); |
| 6051 | 6052 | tcg_temp_free(r_tmp1); |
| ... | ... | @@ -6077,7 +6078,7 @@ static inline void gen_movcf_d (DisasContext *ctx, int fs, int fd, int cc, int t |
| 6077 | 6078 | tcg_gen_ld_i32(r_tmp1, current_fpu, offsetof(CPUMIPSFPUContext, fcr31)); |
| 6078 | 6079 | tcg_gen_andi_i32(r_tmp1, r_tmp1, ccbit); |
| 6079 | 6080 | tcg_gen_brcondi_i32(cond, r_tmp1, 0, l1); |
| 6080 | - tcg_gen_movi_i64(fp1, fp0); | |
| 6081 | + tcg_gen_mov_i64(fp1, fp0); | |
| 6081 | 6082 | tcg_temp_free(fp0); |
| 6082 | 6083 | gen_set_label(l1); |
| 6083 | 6084 | tcg_temp_free(r_tmp1); |
| ... | ... | @@ -6110,12 +6111,12 @@ static inline void gen_movcf_ps (int fs, int fd, int cc, int tf) |
| 6110 | 6111 | tcg_gen_shri_i32(r_tmp1, r_tmp1, cc); |
| 6111 | 6112 | tcg_gen_andi_i32(r_tmp2, r_tmp1, 0x1); |
| 6112 | 6113 | tcg_gen_brcondi_i32(cond, r_tmp2, 0, l1); |
| 6113 | - tcg_gen_movi_i32(fp1, fp0); | |
| 6114 | + tcg_gen_mov_i32(fp1, fp0); | |
| 6114 | 6115 | tcg_temp_free(fp0); |
| 6115 | 6116 | gen_set_label(l1); |
| 6116 | 6117 | tcg_gen_andi_i32(r_tmp2, r_tmp1, 0x2); |
| 6117 | 6118 | tcg_gen_brcondi_i32(cond, r_tmp2, 0, l2); |
| 6118 | - tcg_gen_movi_i32(fph1, fph0); | |
| 6119 | + tcg_gen_mov_i32(fph1, fph0); | |
| 6119 | 6120 | tcg_temp_free(fph0); |
| 6120 | 6121 | gen_set_label(l2); |
| 6121 | 6122 | tcg_temp_free(r_tmp1); | ... | ... |