Skip to content

Commit

Permalink
target-cris: Move TCG initialization to CRISCPU initfn
Browse files Browse the repository at this point in the history
Split out TCG initialization from cpu_cris_init(). Avoid CPUCRISState
dependency for v10-specific initialization and for non-v10 by inlining
the decision into the initfn as well.

Signed-off-by: Andreas Färber <afaerber@suse.de>
  • Loading branch information
afaerber committed Feb 7, 2013
1 parent 13b5747 commit 2e9812f
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 18 deletions.
10 changes: 10 additions & 0 deletions target-cris/cpu.c
Expand Up @@ -70,8 +70,18 @@ static void cris_cpu_initfn(Object *obj)
{
CRISCPU *cpu = CRIS_CPU(obj);
CPUCRISState *env = &cpu->env;
static bool tcg_initialized;

cpu_exec_init(env);

if (tcg_enabled() && !tcg_initialized) {
tcg_initialized = true;
if (env->pregs[PR_VR] < 32) {
cris_initialize_crisv10_tcg();
} else {
cris_initialize_tcg();
}
}
}

static void cris_cpu_class_init(ObjectClass *oc, void *data)
Expand Down
3 changes: 3 additions & 0 deletions target-cris/cpu.h
Expand Up @@ -182,6 +182,9 @@ void do_interrupt(CPUCRISState *env);
int cpu_cris_signal_handler(int host_signum, void *pinfo,
void *puc);

void cris_initialize_tcg(void);
void cris_initialize_crisv10_tcg(void);

enum {
CC_OP_DYNAMIC, /* Use env->cc_op */
CC_OP_FLAGS,
Expand Down
19 changes: 5 additions & 14 deletions target-cris/translate.c
Expand Up @@ -3550,8 +3550,6 @@ CRISCPU *cpu_cris_init(const char *cpu_model)
{
CRISCPU *cpu;
CPUCRISState *env;
static int tcg_initialized = 0;
int i;

cpu = CRIS_CPU(object_new(TYPE_CRIS_CPU));
env = &cpu->env;
Expand All @@ -3560,21 +3558,16 @@ CRISCPU *cpu_cris_init(const char *cpu_model)

object_property_set_bool(OBJECT(cpu), true, "realized", NULL);

if (tcg_initialized) {
return cpu;
}
return cpu;
}

tcg_initialized = 1;
void cris_initialize_tcg(void)
{
int i;

#define GEN_HELPER 2
#include "helper.h"

if (env->pregs[PR_VR] < 32) {
cpu_crisv10_init(env);
return cpu;
}


cpu_env = tcg_global_reg_new_ptr(TCG_AREG0, "env");
cc_x = tcg_global_mem_new(TCG_AREG0,
offsetof(CPUCRISState, cc_x), "cc_x");
Expand Down Expand Up @@ -3614,8 +3607,6 @@ CRISCPU *cpu_cris_init(const char *cpu_model)
offsetof(CPUCRISState, pregs[i]),
pregnames[i]);
}

return cpu;
}

void restore_state_to_opc(CPUCRISState *env, TranslationBlock *tb, int pc_pos)
Expand Down
5 changes: 1 addition & 4 deletions target-cris/translate_v10.c
Expand Up @@ -1257,7 +1257,7 @@ static unsigned int crisv10_decoder(CPUCRISState *env, DisasContext *dc)
return insn_len;
}

static CPUCRISState *cpu_crisv10_init (CPUCRISState *env)
void cris_initialize_crisv10_tcg(void)
{
int i;

Expand Down Expand Up @@ -1300,7 +1300,4 @@ static CPUCRISState *cpu_crisv10_init (CPUCRISState *env)
offsetof(CPUCRISState, pregs[i]),
pregnames_v10[i]);
}

return env;
}

0 comments on commit 2e9812f

Please sign in to comment.