mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
target-i386: move tcg initialization into x86_cpu_initfn()
In order to make cpu object not depended on external ad-hoc initialization routines, move tcg initialization from cpu_x86_init inside cpu object "x86_cpu_initfn()". Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
84e3b60259
commit
d65e9815b1
3 changed files with 12 additions and 10 deletions
|
@ -1716,6 +1716,7 @@ static void x86_cpu_initfn(Object *obj)
|
|||
{
|
||||
X86CPU *cpu = X86_CPU(obj);
|
||||
CPUX86State *env = &cpu->env;
|
||||
static int inited;
|
||||
|
||||
cpu_exec_init(env);
|
||||
|
||||
|
@ -1745,6 +1746,15 @@ static void x86_cpu_initfn(Object *obj)
|
|||
x86_cpuid_set_tsc_freq, NULL, NULL, NULL);
|
||||
|
||||
env->cpuid_apic_id = env->cpu_index;
|
||||
|
||||
/* init various static tables used in TCG mode */
|
||||
if (tcg_enabled() && !inited) {
|
||||
inited = 1;
|
||||
optimize_flags_init();
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
cpu_set_debug_excp_handler(breakpoint_handler);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
static void x86_cpu_common_class_init(ObjectClass *oc, void *data)
|
||||
|
|
|
@ -933,6 +933,7 @@ static inline int hw_breakpoint_len(unsigned long dr7, int index)
|
|||
void hw_breakpoint_insert(CPUX86State *env, int index);
|
||||
void hw_breakpoint_remove(CPUX86State *env, int index);
|
||||
int check_hw_breakpoints(CPUX86State *env, int force_dr6_update);
|
||||
void breakpoint_handler(CPUX86State *env);
|
||||
|
||||
/* will be suppressed */
|
||||
void cpu_x86_update_cr0(CPUX86State *env, uint32_t new_cr0);
|
||||
|
|
|
@ -941,7 +941,7 @@ int check_hw_breakpoints(CPUX86State *env, int force_dr6_update)
|
|||
return hit_enabled;
|
||||
}
|
||||
|
||||
static void breakpoint_handler(CPUX86State *env)
|
||||
void breakpoint_handler(CPUX86State *env)
|
||||
{
|
||||
CPUBreakpoint *bp;
|
||||
|
||||
|
@ -1151,20 +1151,11 @@ X86CPU *cpu_x86_init(const char *cpu_model)
|
|||
{
|
||||
X86CPU *cpu;
|
||||
CPUX86State *env;
|
||||
static int inited;
|
||||
|
||||
cpu = X86_CPU(object_new(TYPE_X86_CPU));
|
||||
env = &cpu->env;
|
||||
env->cpu_model_str = cpu_model;
|
||||
|
||||
/* init various static tables used in TCG mode */
|
||||
if (tcg_enabled() && !inited) {
|
||||
inited = 1;
|
||||
optimize_flags_init();
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
cpu_set_debug_excp_handler(breakpoint_handler);
|
||||
#endif
|
||||
}
|
||||
if (cpu_x86_register(cpu, cpu_model) < 0) {
|
||||
object_delete(OBJECT(cpu));
|
||||
return NULL;
|
||||
|
|
Loading…
Reference in a new issue