From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:34249) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UVR8g-0004yk-4p for qemu-devel@nongnu.org; Thu, 25 Apr 2013 14:43:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UVR8e-0001rg-QF for qemu-devel@nongnu.org; Thu, 25 Apr 2013 14:43:26 -0400 Received: from mx1.redhat.com ([209.132.183.28]:41490) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UVR8e-0001ra-I5 for qemu-devel@nongnu.org; Thu, 25 Apr 2013 14:43:24 -0400 From: Eduardo Habkost Date: Thu, 25 Apr 2013 15:43:02 -0300 Message-Id: <1366915386-14728-4-git-send-email-ehabkost@redhat.com> In-Reply-To: <1366915386-14728-1-git-send-email-ehabkost@redhat.com> References: <1366915386-14728-1-git-send-email-ehabkost@redhat.com> Subject: [Qemu-devel] [RFC 3/7] target-i386: Introduce compat function to set CPUID 'model' List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Igor Mammedov , =?UTF-8?q?Andreas=20F=C3=A4rber?= Introduce x86_cpu_compat_set_model(), which can be used by machine-type init functions to change the 'model' value of CPU models for compatibility. Signed-off-by: Eduardo Habkost --- target-i386/cpu.c | 22 ++++++++++++++++++++++ target-i386/cpu.h | 1 + 2 files changed, 23 insertions(+) diff --git a/target-i386/cpu.c b/target-i386/cpu.c index 6ef5842..8ce088e 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -1018,6 +1018,28 @@ void x86_cpu_compat_set_level(const char *cpu_model, uint32_t level) } } +/** + * x86_cpu_compat_set_model: + * @cpu_model: CPU model name to be changed. If NULL, all CPU models are changed + * @model: New value for 'model' field on CPU model + * + * Change CPU model 'model' field for compatibility. + * + * This function may be used by machine-type compatibility functions + * to set a backwards-compatible value for the 'model' field on CPU models. + */ +void x86_cpu_compat_set_model(const char *cpu_model, uint32_t model) +{ + x86_def_t *def; + int i; + for (i = 0; i < ARRAY_SIZE(builtin_x86_defs); i++) { + def = &builtin_x86_defs[i]; + if (!cpu_model || !strcmp(cpu_model, def->name)) { + def->model = model; + } + } +} + #ifdef CONFIG_KVM static int cpu_x86_fill_model_id(char *str) { diff --git a/target-i386/cpu.h b/target-i386/cpu.h index 86a5988..1cd5d19 100644 --- a/target-i386/cpu.h +++ b/target-i386/cpu.h @@ -1257,6 +1257,7 @@ void disable_kvm_pv_eoi(void); void x86_cpu_compat_set_features(const char *cpu_model, FeatureWord w, uint32_t feat_add, uint32_t feat_remove); void x86_cpu_compat_set_level(const char *cpu_model, uint32_t level); +void x86_cpu_compat_set_model(const char *cpu_model, uint32_t model); /* Return name of 32-bit register, from a R_* constant */ -- 1.8.1.4