From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Mm0yk-0007Y1-Jt for qemu-devel@nongnu.org; Fri, 11 Sep 2009 03:55:34 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Mm0yg-0007XH-Sx for qemu-devel@nongnu.org; Fri, 11 Sep 2009 03:55:34 -0400 Received: from [199.232.76.173] (port=39803 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Mm0yg-0007XE-PV for qemu-devel@nongnu.org; Fri, 11 Sep 2009 03:55:30 -0400 Received: from mx20.gnu.org ([199.232.41.8]:2744) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Mm0yg-0003rS-AQ for qemu-devel@nongnu.org; Fri, 11 Sep 2009 03:55:30 -0400 Received: from mx1.redhat.com ([209.132.183.28]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Mm0yf-0003s0-JK for qemu-devel@nongnu.org; Fri, 11 Sep 2009 03:55:29 -0400 Date: Fri, 11 Sep 2009 13:25:00 +0530 From: Amit Shah Subject: Re: [Qemu-devel] [PATCH 09/12] cpuid: simplify CPUID flag search function Message-ID: <20090911075500.GE31399@amit-x200.redhat.com> References: <1252621257-26364-1-git-send-email-andre.przywara@amd.com> <1252621257-26364-10-git-send-email-andre.przywara@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1252621257-26364-10-git-send-email-andre.przywara@amd.com> List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Andre Przywara Cc: qemu-devel@nongnu.org On (Fri) Sep 11 2009 [00:20:54], Andre Przywara wrote: > avoid code duplication and handle the CPUID flag name search in a > loop. > > Signed-off-by: Andre Przywara > --- > target-i386/cpuid.c | 33 +++++++++++++-------------------- > 1 files changed, 13 insertions(+), 20 deletions(-) > > diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c > index e62dc04..4be1449 100644 > --- a/target-i386/cpuid.c > +++ b/target-i386/cpuid.c > @@ -71,29 +71,22 @@ static void add_flagname_to_bitmaps(const char *flagname, uint32_t *features, > uint32_t *ext2_features, > uint32_t *ext3_features) > { > - int i; > + int i, j; > int found = 0; > + const char ** feature_names[4] = {feature_name, ext_feature_name, > + ext2_feature_name, ext3_feature_name}; > + uint32_t* feature_flags[4] = {features, ext_features, > + ext2_features, ext3_features}; > > - for ( i = 0 ; i < 32 ; i++ ) > - if (feature_name[i] && !strcmp (flagname, feature_name[i])) { > - *features |= 1 << i; > - found = 1; > - } > - for ( i = 0 ; i < 32 ; i++ ) > - if (ext_feature_name[i] && !strcmp (flagname, ext_feature_name[i])) { > - *ext_features |= 1 << i; > - found = 1; > - } > - for ( i = 0 ; i < 32 ; i++ ) > - if (ext2_feature_name[i] && !strcmp (flagname, ext2_feature_name[i])) { > - *ext2_features |= 1 << i; > - found = 1; > - } > - for ( i = 0 ; i < 32 ; i++ ) > - if (ext3_feature_name[i] && !strcmp (flagname, ext3_feature_name[i])) { > - *ext3_features |= 1 << i; > - found = 1; > + for (j = 0; j < 4; j++) { > + for (i = 0; i < 32; i++) { > + if (feature_names[j][i] && > + !strcmp(flagname, feature_names[j][i])) { > + *feature_flags[j] |= 1 << i; > + found = 1; > + } > } > + } > if (!found) { > fprintf(stderr, "CPU feature %s not found\n", flagname); > } This just reports the entire string, right? Not just the feature as the printf suggests. Amit