mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 16:53:55 -06:00
use the TCG code generator
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3944 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
c896fe29d6
commit
57fec1fee9
35 changed files with 1098 additions and 2364 deletions
|
@ -25,6 +25,7 @@
|
|||
#include "cpu.h"
|
||||
#include "exec-all.h"
|
||||
#include "disas.h"
|
||||
#include "tcg-op.h"
|
||||
|
||||
#define DO_SINGLE_STEP
|
||||
#define GENERATE_NOP
|
||||
|
@ -41,24 +42,6 @@ struct DisasContext {
|
|||
uint32_t amask;
|
||||
};
|
||||
|
||||
#ifdef USE_DIRECT_JUMP
|
||||
#define TBPARAM(x)
|
||||
#else
|
||||
#define TBPARAM(x) (long)(x)
|
||||
#endif
|
||||
|
||||
enum {
|
||||
#define DEF(s, n, copy_size) INDEX_op_ ## s,
|
||||
#include "opc.h"
|
||||
#undef DEF
|
||||
NB_OPS,
|
||||
};
|
||||
|
||||
static uint16_t *gen_opc_ptr;
|
||||
static uint32_t *gen_opparam_ptr;
|
||||
|
||||
#include "gen-op.h"
|
||||
|
||||
static always_inline void gen_op_nop (void)
|
||||
{
|
||||
#if defined(GENERATE_NOP)
|
||||
|
@ -1988,10 +1971,7 @@ static always_inline int gen_intermediate_code_internal (CPUState *env,
|
|||
int ret;
|
||||
|
||||
pc_start = tb->pc;
|
||||
gen_opc_ptr = gen_opc_buf;
|
||||
gen_opc_end = gen_opc_buf + OPC_MAX_SIZE;
|
||||
gen_opparam_ptr = gen_opparam_buf;
|
||||
nb_gen_labels = 0;
|
||||
ctx.pc = pc_start;
|
||||
ctx.amask = env->amask;
|
||||
#if defined (CONFIG_USER_ONLY)
|
||||
|
@ -2051,12 +2031,11 @@ static always_inline int gen_intermediate_code_internal (CPUState *env,
|
|||
if (ret != 1 && ret != 3) {
|
||||
gen_update_pc(&ctx);
|
||||
}
|
||||
gen_op_reset_T0();
|
||||
#if defined (DO_TB_FLUSH)
|
||||
gen_op_tb_flush();
|
||||
#endif
|
||||
/* Generate the return instruction */
|
||||
gen_op_exit_tb();
|
||||
tcg_gen_exit_tb(0);
|
||||
*gen_opc_ptr = INDEX_op_end;
|
||||
if (search_pc) {
|
||||
j = gen_opc_ptr - gen_opc_buf;
|
||||
|
@ -2075,11 +2054,6 @@ static always_inline int gen_intermediate_code_internal (CPUState *env,
|
|||
target_disas(logfile, pc_start, ctx.pc - pc_start, 1);
|
||||
fprintf(logfile, "\n");
|
||||
}
|
||||
if (loglevel & CPU_LOG_TB_OP) {
|
||||
fprintf(logfile, "OP:\n");
|
||||
dump_ops(gen_opc_buf, gen_opparam_buf);
|
||||
fprintf(logfile, "\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue