[libvirt] [PATCH 02/10] cpu_x86: Prepare for ecx_in CPUID parameter

Jiri Denemark jdenemar at redhat.com
Thu Jun 9 08:07:37 UTC 2016


On Wed, Jun 08, 2016 at 17:04:19 +0200, Peter Krempa wrote:
> On Wed, Jun 08, 2016 at 14:41:30 +0200, Jiri Denemark wrote:
> > CPUID instruction normally takes its parameter from EAX, but sometimes
> > ECX is used as an additional parameter. This patch prepares the x86 CPU
> > driver code for the new 'ecx_in' CPUID parameter.
> > 
> > Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> > ---
> >  src/cpu/cpu_x86.c                                  | 52 +++++++++++++---------
> >  src/cpu/cpu_x86_data.h                             |  1 +
> >  src/qemu/qemu_monitor_json.c                       |  4 ++
> >  .../qemumonitorjson-getcpu-ecx.data                | 10 ++---
> >  .../qemumonitorjson-getcpu-full.data               |  6 +--
> >  .../qemumonitorjson-getcpu-host.data               |  8 ++--
> >  6 files changed, 49 insertions(+), 32 deletions(-)
> > 
> > diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
> > index 82921db..ae809de 100644
> > --- a/src/cpu/cpu_x86.c
> > +++ b/src/cpu/cpu_x86.c
> 
> [...]
> 
> > @@ -1860,7 +1869,8 @@ cpuidCall(virCPUx86CPUID *cpuid)
> >            "=b" (cpuid->ebx),
> >            "=c" (cpuid->ecx),
> >            "=d" (cpuid->edx)
> > -        : "a" (cpuid->eax_in));
> > +        : "a" (cpuid->eax_in),
> > +          "c" (cpuid->ecx_in));
> >  # else
> >      /* we need to avoid direct use of ebx for CPUID output as it is used
> >       * for global offset table on i386 with -fPIC
> > @@ -1876,7 +1886,8 @@ cpuidCall(virCPUx86CPUID *cpuid)
> >            "=r" (cpuid->ebx),
> >            "=c" (cpuid->ecx),
> >            "=d" (cpuid->edx)
> > -        : "a" (cpuid->eax_in)
> > +        : "a" (cpuid->eax_in),
> > +          "c" (cpuid->ecx_in)
> 
> I think the removal of clearing of the ECX register from the next patch
> in the asm code above actually belongs here.

Good catch, apparently I was not careful enough when splitting the
changes in two patches.

Jirka




More information about the libvir-list mailing list