Small cleanup of gen_intermediate_code(_internal), by Laurent Desnogues.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4891 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
ths 2008-07-18 18:01:29 +00:00
parent d1b5c20dcd
commit 2cfc5f17d3
11 changed files with 59 additions and 72 deletions

View File

@ -60,8 +60,8 @@ typedef void (GenOpFunc3)(long, long, long);
extern FILE *logfile; extern FILE *logfile;
extern int loglevel; extern int loglevel;
int gen_intermediate_code(CPUState *env, struct TranslationBlock *tb); void gen_intermediate_code(CPUState *env, struct TranslationBlock *tb);
int gen_intermediate_code_pc(CPUState *env, struct TranslationBlock *tb); void gen_intermediate_code_pc(CPUState *env, struct TranslationBlock *tb);
void gen_pc_load(CPUState *env, struct TranslationBlock *tb, void gen_pc_load(CPUState *env, struct TranslationBlock *tb,
unsigned long searched_pc, int pc_pos, void *puc); unsigned long searched_pc, int pc_pos, void *puc);

View File

@ -1970,7 +1970,7 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
return ret; return ret;
} }
static always_inline int gen_intermediate_code_internal (CPUState *env, static always_inline void gen_intermediate_code_internal (CPUState *env,
TranslationBlock *tb, TranslationBlock *tb,
int search_pc) int search_pc)
{ {
@ -2086,18 +2086,16 @@ static always_inline int gen_intermediate_code_internal (CPUState *env,
fprintf(logfile, "\n"); fprintf(logfile, "\n");
} }
#endif #endif
return 0;
} }
int gen_intermediate_code (CPUState *env, struct TranslationBlock *tb) void gen_intermediate_code (CPUState *env, struct TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 0); gen_intermediate_code_internal(env, tb, 0);
} }
int gen_intermediate_code_pc (CPUState *env, struct TranslationBlock *tb) void gen_intermediate_code_pc (CPUState *env, struct TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 1); gen_intermediate_code_internal(env, tb, 1);
} }
CPUAlphaState * cpu_alpha_init (const char *cpu_model) CPUAlphaState * cpu_alpha_init (const char *cpu_model)

View File

@ -8544,7 +8544,7 @@ undef:
/* generate intermediate code in gen_opc_buf and gen_opparam_buf for /* generate intermediate code in gen_opc_buf and gen_opparam_buf for
basic block 'tb'. If search_pc is TRUE, also generate PC basic block 'tb'. If search_pc is TRUE, also generate PC
information for each intermediate instruction. */ information for each intermediate instruction. */
static inline int gen_intermediate_code_internal(CPUState *env, static inline void gen_intermediate_code_internal(CPUState *env,
TranslationBlock *tb, TranslationBlock *tb,
int search_pc) int search_pc)
{ {
@ -8787,17 +8787,16 @@ done_generating:
tb->size = dc->pc - pc_start; tb->size = dc->pc - pc_start;
tb->icount = num_insns; tb->icount = num_insns;
} }
return 0;
} }
int gen_intermediate_code(CPUState *env, TranslationBlock *tb) void gen_intermediate_code(CPUState *env, TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 0); gen_intermediate_code_internal(env, tb, 0);
} }
int gen_intermediate_code_pc(CPUState *env, TranslationBlock *tb) void gen_intermediate_code_pc(CPUState *env, TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 1); gen_intermediate_code_internal(env, tb, 1);
} }
static const char *cpu_mode_names[16] = { static const char *cpu_mode_names[16] = {

View File

@ -3022,7 +3022,7 @@ static void check_breakpoint(CPUState *env, DisasContext *dc)
*/ */
/* generate intermediate code for basic block 'tb'. */ /* generate intermediate code for basic block 'tb'. */
static int static void
gen_intermediate_code_internal(CPUState *env, TranslationBlock *tb, gen_intermediate_code_internal(CPUState *env, TranslationBlock *tb,
int search_pc) int search_pc)
{ {
@ -3233,17 +3233,16 @@ gen_intermediate_code_internal(CPUState *env, TranslationBlock *tb,
dc->pc - pc_start, gen_opc_ptr - gen_opc_buf); dc->pc - pc_start, gen_opc_ptr - gen_opc_buf);
} }
#endif #endif
return 0;
} }
int gen_intermediate_code (CPUState *env, struct TranslationBlock *tb) void gen_intermediate_code (CPUState *env, struct TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 0); gen_intermediate_code_internal(env, tb, 0);
} }
int gen_intermediate_code_pc (CPUState *env, struct TranslationBlock *tb) void gen_intermediate_code_pc (CPUState *env, struct TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 1); gen_intermediate_code_internal(env, tb, 1);
} }
void cpu_dump_state (CPUState *env, FILE *f, void cpu_dump_state (CPUState *env, FILE *f,

View File

@ -7148,7 +7148,7 @@ void optimize_flags_init(void)
/* generate intermediate code in gen_opc_buf and gen_opparam_buf for /* generate intermediate code in gen_opc_buf and gen_opparam_buf for
basic block 'tb'. If search_pc is TRUE, also generate PC basic block 'tb'. If search_pc is TRUE, also generate PC
information for each intermediate instruction. */ information for each intermediate instruction. */
static inline int gen_intermediate_code_internal(CPUState *env, static inline void gen_intermediate_code_internal(CPUState *env,
TranslationBlock *tb, TranslationBlock *tb,
int search_pc) int search_pc)
{ {
@ -7321,17 +7321,16 @@ static inline int gen_intermediate_code_internal(CPUState *env,
tb->size = pc_ptr - pc_start; tb->size = pc_ptr - pc_start;
tb->icount = num_insns; tb->icount = num_insns;
} }
return 0;
} }
int gen_intermediate_code(CPUState *env, TranslationBlock *tb) void gen_intermediate_code(CPUState *env, TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 0); gen_intermediate_code_internal(env, tb, 0);
} }
int gen_intermediate_code_pc(CPUState *env, TranslationBlock *tb) void gen_intermediate_code_pc(CPUState *env, TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 1); gen_intermediate_code_internal(env, tb, 1);
} }
void gen_pc_load(CPUState *env, TranslationBlock *tb, void gen_pc_load(CPUState *env, TranslationBlock *tb,

View File

@ -2911,7 +2911,7 @@ static void disas_m68k_insn(CPUState * env, DisasContext *s)
} }
/* generate intermediate code for basic block 'tb'. */ /* generate intermediate code for basic block 'tb'. */
static inline int static inline void
gen_intermediate_code_internal(CPUState *env, TranslationBlock *tb, gen_intermediate_code_internal(CPUState *env, TranslationBlock *tb,
int search_pc) int search_pc)
{ {
@ -3039,17 +3039,16 @@ gen_intermediate_code_internal(CPUState *env, TranslationBlock *tb,
//optimize_flags(); //optimize_flags();
//expand_target_qops(); //expand_target_qops();
return 0;
} }
int gen_intermediate_code(CPUState *env, TranslationBlock *tb) void gen_intermediate_code(CPUState *env, TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 0); gen_intermediate_code_internal(env, tb, 0);
} }
int gen_intermediate_code_pc(CPUState *env, TranslationBlock *tb) void gen_intermediate_code_pc(CPUState *env, TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 1); gen_intermediate_code_internal(env, tb, 1);
} }
void cpu_dump_state(CPUState *env, FILE *f, void cpu_dump_state(CPUState *env, FILE *f,

View File

@ -8453,7 +8453,7 @@ static void decode_opc (CPUState *env, DisasContext *ctx)
} }
} }
static inline int static inline void
gen_intermediate_code_internal (CPUState *env, TranslationBlock *tb, gen_intermediate_code_internal (CPUState *env, TranslationBlock *tb,
int search_pc) int search_pc)
{ {
@ -8598,18 +8598,16 @@ done_generating:
fprintf(logfile, "---------------- %d %08x\n", ctx.bstate, ctx.hflags); fprintf(logfile, "---------------- %d %08x\n", ctx.bstate, ctx.hflags);
} }
#endif #endif
return 0;
} }
int gen_intermediate_code (CPUState *env, struct TranslationBlock *tb) void gen_intermediate_code (CPUState *env, struct TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 0); gen_intermediate_code_internal(env, tb, 0);
} }
int gen_intermediate_code_pc (CPUState *env, struct TranslationBlock *tb) void gen_intermediate_code_pc (CPUState *env, struct TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 1); gen_intermediate_code_internal(env, tb, 1);
} }
void fpu_dump_state(CPUState *env, FILE *f, void fpu_dump_state(CPUState *env, FILE *f,

View File

@ -6171,7 +6171,7 @@ void cpu_dump_statistics (CPUState *env, FILE*f,
} }
/*****************************************************************************/ /*****************************************************************************/
static always_inline int gen_intermediate_code_internal (CPUState *env, static always_inline void gen_intermediate_code_internal (CPUState *env,
TranslationBlock *tb, TranslationBlock *tb,
int search_pc) int search_pc)
{ {
@ -6379,17 +6379,16 @@ static always_inline int gen_intermediate_code_internal (CPUState *env,
fprintf(logfile, "\n"); fprintf(logfile, "\n");
} }
#endif #endif
return 0;
} }
int gen_intermediate_code (CPUState *env, struct TranslationBlock *tb) void gen_intermediate_code (CPUState *env, struct TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 0); gen_intermediate_code_internal(env, tb, 0);
} }
int gen_intermediate_code_pc (CPUState *env, struct TranslationBlock *tb) void gen_intermediate_code_pc (CPUState *env, struct TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 1); gen_intermediate_code_internal(env, tb, 1);
} }
void gen_pc_load(CPUState *env, TranslationBlock *tb, void gen_pc_load(CPUState *env, TranslationBlock *tb,

View File

@ -1195,7 +1195,7 @@ void decode_opc(DisasContext * ctx)
} }
} }
static inline int static inline void
gen_intermediate_code_internal(CPUState * env, TranslationBlock * tb, gen_intermediate_code_internal(CPUState * env, TranslationBlock * tb,
int search_pc) int search_pc)
{ {
@ -1326,17 +1326,16 @@ gen_intermediate_code_internal(CPUState * env, TranslationBlock * tb,
fprintf(logfile, "\n"); fprintf(logfile, "\n");
} }
#endif #endif
return 0;
} }
int gen_intermediate_code(CPUState * env, struct TranslationBlock *tb) void gen_intermediate_code(CPUState * env, struct TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 0); gen_intermediate_code_internal(env, tb, 0);
} }
int gen_intermediate_code_pc(CPUState * env, struct TranslationBlock *tb) void gen_intermediate_code_pc(CPUState * env, struct TranslationBlock *tb)
{ {
return gen_intermediate_code_internal(env, tb, 1); gen_intermediate_code_internal(env, tb, 1);
} }
void gen_pc_load(CPUState *env, TranslationBlock *tb, void gen_pc_load(CPUState *env, TranslationBlock *tb,

View File

@ -4724,7 +4724,7 @@ static void disas_sparc_insn(DisasContext * dc)
#endif #endif
} }
static inline int gen_intermediate_code_internal(TranslationBlock * tb, static inline void gen_intermediate_code_internal(TranslationBlock * tb,
int spc, CPUSPARCState *env) int spc, CPUSPARCState *env)
{ {
target_ulong pc_start, last_pc; target_ulong pc_start, last_pc;
@ -4869,17 +4869,16 @@ static inline int gen_intermediate_code_internal(TranslationBlock * tb,
fprintf(logfile, "\n"); fprintf(logfile, "\n");
} }
#endif #endif
return 0;
} }
int gen_intermediate_code(CPUSPARCState * env, TranslationBlock * tb) void gen_intermediate_code(CPUSPARCState * env, TranslationBlock * tb)
{ {
return gen_intermediate_code_internal(tb, 0, env); gen_intermediate_code_internal(tb, 0, env);
} }
int gen_intermediate_code_pc(CPUSPARCState * env, TranslationBlock * tb) void gen_intermediate_code_pc(CPUSPARCState * env, TranslationBlock * tb)
{ {
return gen_intermediate_code_internal(tb, 1, env); gen_intermediate_code_internal(tb, 1, env);
} }
void gen_intermediate_code_init(CPUSPARCState *env) void gen_intermediate_code_init(CPUSPARCState *env)

View File

@ -94,8 +94,7 @@ int cpu_gen_code(CPUState *env, TranslationBlock *tb, int *gen_code_size_ptr)
#endif #endif
tcg_func_start(s); tcg_func_start(s);
if (gen_intermediate_code(env, tb) < 0) gen_intermediate_code(env, tb);
return -1;
/* generate machine code */ /* generate machine code */
gen_code_buf = tb->tc_ptr; gen_code_buf = tb->tc_ptr;
@ -156,8 +155,7 @@ int cpu_restore_state(TranslationBlock *tb,
#endif #endif
tcg_func_start(s); tcg_func_start(s);
if (gen_intermediate_code_pc(env, tb) < 0) gen_intermediate_code_pc(env, tb);
return -1;
if (use_icount) { if (use_icount) {
/* Reset the cycle counter to the start of the block. */ /* Reset the cycle counter to the start of the block. */