Commit c239529e7f4d8f9adfaae7aeb6d73632868d3acd
1 parent
5cc1d1e6
Free constant temporaries.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4670 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
20 additions
and
2 deletions
target-mips/translate.c
| @@ -425,6 +425,24 @@ enum { | @@ -425,6 +425,24 @@ enum { | ||
| 425 | /* global register indices */ | 425 | /* global register indices */ |
| 426 | static TCGv cpu_env, current_tc_gprs, current_tc_hi, cpu_T[2]; | 426 | static TCGv cpu_env, current_tc_gprs, current_tc_hi, cpu_T[2]; |
| 427 | 427 | ||
| 428 | +static inline void tcg_gen_helper_0_1i(void *func, TCGv arg) | ||
| 429 | +{ | ||
| 430 | + TCGv t = tcg_const_i32(arg); | ||
| 431 | + | ||
| 432 | + tcg_gen_helper_0_1(func, t); | ||
| 433 | + tcg_temp_free(t); | ||
| 434 | +} | ||
| 435 | + | ||
| 436 | +static inline void tcg_gen_helper_0_2ii(void *func, TCGv arg1, TCGv arg2) | ||
| 437 | +{ | ||
| 438 | + TCGv t1 = tcg_const_i32(arg1); | ||
| 439 | + TCGv t2 = tcg_const_i32(arg2); | ||
| 440 | + | ||
| 441 | + tcg_gen_helper_0_2(func, t1, t2); | ||
| 442 | + tcg_temp_free(t1); | ||
| 443 | + tcg_temp_free(t2); | ||
| 444 | +} | ||
| 445 | + | ||
| 428 | typedef struct DisasContext { | 446 | typedef struct DisasContext { |
| 429 | struct TranslationBlock *tb; | 447 | struct TranslationBlock *tb; |
| 430 | target_ulong pc, saved_pc; | 448 | target_ulong pc, saved_pc; |
| @@ -797,7 +815,7 @@ static always_inline void | @@ -797,7 +815,7 @@ static always_inline void | ||
| 797 | generate_exception_err (DisasContext *ctx, int excp, int err) | 815 | generate_exception_err (DisasContext *ctx, int excp, int err) |
| 798 | { | 816 | { |
| 799 | save_cpu_state(ctx, 1); | 817 | save_cpu_state(ctx, 1); |
| 800 | - tcg_gen_helper_0_2(do_raise_exception_err, tcg_const_i32(excp), tcg_const_i32(err)); | 818 | + tcg_gen_helper_0_2ii(do_raise_exception_err, excp, err); |
| 801 | tcg_gen_helper_0_0(do_interrupt_restart); | 819 | tcg_gen_helper_0_0(do_interrupt_restart); |
| 802 | tcg_gen_exit_tb(0); | 820 | tcg_gen_exit_tb(0); |
| 803 | } | 821 | } |
| @@ -806,7 +824,7 @@ static always_inline void | @@ -806,7 +824,7 @@ static always_inline void | ||
| 806 | generate_exception (DisasContext *ctx, int excp) | 824 | generate_exception (DisasContext *ctx, int excp) |
| 807 | { | 825 | { |
| 808 | save_cpu_state(ctx, 1); | 826 | save_cpu_state(ctx, 1); |
| 809 | - tcg_gen_helper_0_1(do_raise_exception, tcg_const_i32(excp)); | 827 | + tcg_gen_helper_0_1i(do_raise_exception, excp); |
| 810 | tcg_gen_helper_0_0(do_interrupt_restart); | 828 | tcg_gen_helper_0_0(do_interrupt_restart); |
| 811 | tcg_gen_exit_tb(0); | 829 | tcg_gen_exit_tb(0); |
| 812 | } | 830 | } |