Message ID | CAGG=3QUHwHsVtrc3UYhhbkBX5WOp4Am=beFnn7yyxh6ykTe_Fw@mail.gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [kvm-unit-tests] x86: debug: use a constraint that doesn't allow a memory operand | expand |
On Mon, Sep 9, 2019 at 2:00 PM Bill Wendling <morbo@google.com> wrote: > > The "lea" instruction cannot load the effective address into a memory > location. The "g" constraint allows a compiler to use a memory location. > A compiler that uses a register destination does so only because one is > available. Use a general register constraint to make sure it always uses > a register. > > Signed-off-by: Bill Wendling <morbo@google.com> Reviewed-by: Jim Mattson <jmattson@google.com>
On Mon, Sep 09, 2019 at 02:00:35PM -0700, Bill Wendling wrote: > The "lea" instruction cannot load the effective address into a memory > location. The "g" constraint allows a compiler to use a memory location. > A compiler that uses a register destination does so only because one is > available. Use a general register constraint to make sure it always uses > a register. > > Signed-off-by: Bill Wendling <morbo@google.com> > --- Reviewed-by: Sean Christopherson <sean.j.christopherson@intel.com>
Plain text now. Sorry for spam. On Tue, Sep 24, 2019 at 12:33 PM Bill Wendling <morbo@google.com> wrote: > > + Paolo Bonzini, Radim Krčmář > > On Wed, Sep 11, 2019 at 12:01 PM Sean Christopherson <sean.j.christopherson@intel.com> wrote: >> >> On Mon, Sep 09, 2019 at 02:00:35PM -0700, Bill Wendling wrote: >> > The "lea" instruction cannot load the effective address into a memory >> > location. The "g" constraint allows a compiler to use a memory location. >> > A compiler that uses a register destination does so only because one is >> > available. Use a general register constraint to make sure it always uses >> > a register. >> > >> > Signed-off-by: Bill Wendling <morbo@google.com> >> > --- >> >> Reviewed-by: Sean Christopherson <sean.j.christopherson@intel.com>
On 09/09/19 23:00, Bill Wendling wrote: > The "lea" instruction cannot load the effective address into a memory > location. The "g" constraint allows a compiler to use a memory location. > A compiler that uses a register destination does so only because one is > available. Use a general register constraint to make sure it always uses > a register. > > Signed-off-by: Bill Wendling <morbo@google.com> > --- > x86/debug.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/x86/debug.c b/x86/debug.c > index f66d1d0..2327dac 100644 > --- a/x86/debug.c > +++ b/x86/debug.c > @@ -113,7 +113,7 @@ int main(int ac, char **av) > "and $~(1<<8),%%rax\n\t" > "push %%rax\n\t" > "popf\n\t" > - : "=g" (start) : : "rax"); > + : "=r" (start) : : "rax"); > report("single step", > n == 3 && > db_addr[0] == start+1+6 && dr6[0] == 0xffff4ff0 && > There is another occurrence, also this has spaces and tabs messed up as well. Fixed up and queued. Paolo
diff --git a/x86/debug.c b/x86/debug.c index f66d1d0..2327dac 100644 --- a/x86/debug.c +++ b/x86/debug.c @@ -113,7 +113,7 @@ int main(int ac, char **av) "and $~(1<<8),%%rax\n\t" "push %%rax\n\t" "popf\n\t" - : "=g" (start) : : "rax"); + : "=r" (start) : : "rax"); report("single step", n == 3 && db_addr[0] == start+1+6 && dr6[0] == 0xffff4ff0 &&
The "lea" instruction cannot load the effective address into a memory location. The "g" constraint allows a compiler to use a memory location. A compiler that uses a register destination does so only because one is available. Use a general register constraint to make sure it always uses a register. Signed-off-by: Bill Wendling <morbo@google.com> --- x86/debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)