aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Färber <afaerber@suse.de>2013-01-20 01:30:32 +0100
committerAndreas Färber <afaerber@suse.de>2013-02-16 14:50:58 +0100
commitaa7408ec18c3517b2476a3671cd0b7f171241e2d (patch)
tree064adc63ba5210ce9f1687966cde6bdff64f6ad2
parent2b7ac76729c8253d799a8d3bb9bae76cccb0714e (diff)
downloadqemu-arm-aa7408ec18c3517b2476a3671cd0b7f171241e2d.tar.gz
target-sh4: Move TCG initialization to SuperHCPU initfn
Add a tcg_enabled() check to suppress it for qtest. Signed-off-by: Andreas Färber <afaerber@suse.de>
-rw-r--r--target-sh4/cpu.c4
-rw-r--r--target-sh4/cpu.h1
-rw-r--r--target-sh4/translate.c3
3 files changed, 6 insertions, 2 deletions
diff --git a/target-sh4/cpu.c b/target-sh4/cpu.c
index c66442f445..dc5d7568ea 100644
--- a/target-sh4/cpu.c
+++ b/target-sh4/cpu.c
@@ -73,6 +73,10 @@ static void superh_cpu_initfn(Object *obj)
cpu_exec_init(env);
env->movcal_backup_tail = &(env->movcal_backup);
+
+ if (tcg_enabled()) {
+ sh4_translate_init();
+ }
}
static const VMStateDescription vmstate_sh_cpu = {
diff --git a/target-sh4/cpu.h b/target-sh4/cpu.h
index 34e9b0acf7..49dcd9e7f3 100644
--- a/target-sh4/cpu.h
+++ b/target-sh4/cpu.h
@@ -191,6 +191,7 @@ typedef struct CPUSH4State {
#include "cpu-qom.h"
+void sh4_translate_init(void);
SuperHCPU *cpu_sh4_init(const char *cpu_model);
int cpu_sh4_exec(CPUSH4State * s);
int cpu_sh4_signal_handler(int host_signum, void *pinfo,
diff --git a/target-sh4/translate.c b/target-sh4/translate.c
index 2409a103b2..c58d79a5cd 100644
--- a/target-sh4/translate.c
+++ b/target-sh4/translate.c
@@ -71,7 +71,7 @@ static uint32_t gen_opc_hflags[OPC_BUF_SIZE];
#include "exec/gen-icount.h"
-static void sh4_translate_init(void)
+void sh4_translate_init(void)
{
int i;
static int done_init = 0;
@@ -251,7 +251,6 @@ SuperHCPU *cpu_sh4_init(const char *cpu_model)
cpu = SUPERH_CPU(object_new(TYPE_SUPERH_CPU));
env = &cpu->env;
env->features = def->features;
- sh4_translate_init();
env->cpu_model_str = cpu_model;
cpu_register(env, def);