Patchwork linux-user: Use X86CPU property to retrieve CPUID family

login
register
mail settings
Submitter Andreas Färber
Date July 10, 2013, 4:26 p.m.
Message ID <1373473577-1088-1-git-send-email-afaerber@suse.de>
Download mbox | patch
Permalink /patch/258160/
State New
Headers show

Comments

Andreas Färber - July 10, 2013, 4:26 p.m.
Avoids duplicating the calculation.

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 Have this lying around for a while already, apparently not sent out yet.

 linux-user/cpu-uname.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
Igor Mammedov - July 11, 2013, 5:35 a.m.
On Wed, 10 Jul 2013 18:26:17 +0200
Andreas Färber <afaerber@suse.de> wrote:

> Avoids duplicating the calculation.
> 
> Signed-off-by: Andreas Färber <afaerber@suse.de>
> ---
>  Have this lying around for a while already, apparently not sent out yet.
> 
>  linux-user/cpu-uname.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/linux-user/cpu-uname.c b/linux-user/cpu-uname.c
> index 59cd647..cc713e6 100644
> --- a/linux-user/cpu-uname.c
> +++ b/linux-user/cpu-uname.c
> @@ -55,12 +55,14 @@ const char *cpu_to_uname_machine(void *cpu_env)
>      return "x86-64";
>  #elif defined(TARGET_I386)
>      /* see arch/x86/kernel/cpu/bugs.c: check_bugs(), 386, 486, 586, 686 */
> -    uint32_t cpuid_version = ((CPUX86State *)cpu_env)->cpuid_version;
> -    int family = ((cpuid_version >> 8) & 0x0f) + ((cpuid_version >> 20) & 0xff);
> -    if (family == 4)
> +    CPUState *cpu = ENV_GET_CPU((CPUX86State *)cpu_env);
> +    int family = object_property_get_int(OBJECT(cpu), "family", NULL);
> +    if (family == 4) {
>          return "i486";
> -    if (family == 5)
> +    }
> +    if (family == 5) {
>          return "i586";
> +    }
>      return "i686";
>  #else
>      /* default is #define-d in each arch/ subdir */

Reviewed-By: Igor Mammedov <imammedo@redhat.com>
Andreas Färber - July 22, 2013, 11:06 p.m.
Am 11.07.2013 07:35, schrieb Igor Mammedov:
> On Wed, 10 Jul 2013 18:26:17 +0200
> Andreas Färber <afaerber@suse.de> wrote:
> 
>> Avoids duplicating the calculation.
>>
>> Signed-off-by: Andreas Färber <afaerber@suse.de>
>> ---
>>  Have this lying around for a while already, apparently not sent out yet.
>>
>>  linux-user/cpu-uname.c | 10 ++++++----
>>  1 file changed, 6 insertions(+), 4 deletions(-)
[...]
> Reviewed-By: Igor Mammedov <imammedo@redhat.com>

Thanks, applied to qom-cpu:
https://github.com/afaerber/qemu-cpu/commits/qom-cpu

Andreas

Patch

diff --git a/linux-user/cpu-uname.c b/linux-user/cpu-uname.c
index 59cd647..cc713e6 100644
--- a/linux-user/cpu-uname.c
+++ b/linux-user/cpu-uname.c
@@ -55,12 +55,14 @@  const char *cpu_to_uname_machine(void *cpu_env)
     return "x86-64";
 #elif defined(TARGET_I386)
     /* see arch/x86/kernel/cpu/bugs.c: check_bugs(), 386, 486, 586, 686 */
-    uint32_t cpuid_version = ((CPUX86State *)cpu_env)->cpuid_version;
-    int family = ((cpuid_version >> 8) & 0x0f) + ((cpuid_version >> 20) & 0xff);
-    if (family == 4)
+    CPUState *cpu = ENV_GET_CPU((CPUX86State *)cpu_env);
+    int family = object_property_get_int(OBJECT(cpu), "family", NULL);
+    if (family == 4) {
         return "i486";
-    if (family == 5)
+    }
+    if (family == 5) {
         return "i586";
+    }
     return "i686";
 #else
     /* default is #define-d in each arch/ subdir */