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); | ... | ... |