From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:37794) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sx8DC-0004hY-DF for qemu-devel@nongnu.org; Thu, 02 Aug 2012 23:06:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sx8DA-000672-CZ for qemu-devel@nongnu.org; Thu, 02 Aug 2012 23:06:02 -0400 Received: from mx1.redhat.com ([209.132.183.28]:43520) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sx8DA-00066T-4m for qemu-devel@nongnu.org; Thu, 02 Aug 2012 23:06:00 -0400 From: Eduardo Habkost Date: Thu, 2 Aug 2012 23:59:15 -0300 Message-Id: <1343962766-22024-9-git-send-email-ehabkost@redhat.com> In-Reply-To: <1343962766-22024-1-git-send-email-ehabkost@redhat.com> References: <1343962766-22024-1-git-send-email-ehabkost@redhat.com> Subject: [Qemu-devel] [RFC 08/19] i386: extract CPU model lookup to a separate function 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?= Signed-off-by: Eduardo Habkost --- target-i386/cpu.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/target-i386/cpu.c b/target-i386/cpu.c index dd2dc45..e5be586 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -1231,16 +1231,10 @@ error: return -1; } -static int cpu_x86_build_from_name(x86_def_t *x86_cpu_def, - const char *cpu_model) +static int cpu_x86_find_by_name(x86_def_t *x86_cpu_def, const char *name) { x86_def_t *def; - char *last; - char *s = g_strdup(cpu_model); - char *name = strtok_r(s, ",", &last); - char *featlist = strtok_r(NULL, "", &last); - for (def = x86_defs; def; def = def->next) { if (name && !strcmp(name, def->name)) { break; @@ -1254,6 +1248,22 @@ static int cpu_x86_build_from_name(x86_def_t *x86_cpu_def, } else { memcpy(x86_cpu_def, def, sizeof(*def)); } + return 0; +error: + return -1; +} + +static int cpu_x86_build_from_name(x86_def_t *x86_cpu_def, + const char *cpu_model) +{ + char *last; + char *s = g_strdup(cpu_model); + char *name = strtok_r(s, ",", &last); + char *featlist = strtok_r(NULL, "", &last); + + if (cpu_x86_find_by_name(x86_cpu_def, name) != 0) { + goto error; + } if (cpu_x86_extend_features(x86_cpu_def, featlist) < 0) { goto error; -- 1.7.11.2