diff options
author | Igor Mammedov <imammedo@redhat.com> | 2013-04-11 16:51:40 +0200 |
---|---|---|
committer | Andreas Färber <afaerber@suse.de> | 2013-04-16 01:19:46 +0200 |
commit | 7f833247df4b68719413b5dccc5f84944f442cb3 (patch) | |
tree | e4d0ca0f96e8c060af29af38fb887b23d6bbd6cf /target-i386/cpu.c | |
parent | dd13e08804c8c33c6021c0e27787422534d3b321 (diff) | |
download | hqemu-7f833247df4b68719413b5dccc5f84944f442cb3.zip hqemu-7f833247df4b68719413b5dccc5f84944f442cb3.tar.gz |
target-i386: Split out CPU creation and features parsing
Move CPU creation and features parsing into a separate cpu_x86_create()
function, so that board would be able to set board-specific CPU
properties before CPU is realized.
Keep cpu_x86_init() for compatibility with the code that uses cpu_init()
and doesn't need to modify CPU properties.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
Diffstat (limited to 'target-i386/cpu.c')
-rw-r--r-- | target-i386/cpu.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/target-i386/cpu.c b/target-i386/cpu.c index 0a84000..e2302d8 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -1563,7 +1563,7 @@ static void cpu_x86_register(X86CPU *cpu, const char *name, Error **errp) object_property_set_str(OBJECT(cpu), def->model_id, "model-id", errp); } -X86CPU *cpu_x86_init(const char *cpu_model) +X86CPU *cpu_x86_create(const char *cpu_model, Error **errp) { X86CPU *cpu = NULL; CPUX86State *env; @@ -1593,13 +1593,25 @@ X86CPU *cpu_x86_init(const char *cpu_model) goto out; } - object_property_set_bool(OBJECT(cpu), true, "realized", &error); +out: + error_propagate(errp, error); + g_strfreev(model_pieces); + return cpu; +} + +X86CPU *cpu_x86_init(const char *cpu_model) +{ + Error *error = NULL; + X86CPU *cpu; + + cpu = cpu_x86_create(cpu_model, &error); if (error) { goto out; } + object_property_set_bool(OBJECT(cpu), true, "realized", &error); + out: - g_strfreev(model_pieces); if (error) { fprintf(stderr, "%s\n", error_get_pretty(error)); error_free(error); |