diff mbox series

[kvm-unit-tests] x86: debug: use a constraint that doesn't allow a memory operand

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

Commit Message

Bill Wendling Sept. 9, 2019, 9 p.m. UTC
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(-)

Comments

Jim Mattson Sept. 10, 2019, 4:46 p.m. UTC | #1
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>
Sean Christopherson Sept. 11, 2019, 7:01 p.m. UTC | #2
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>
Bill Wendling Sept. 24, 2019, 7:35 p.m. UTC | #3
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>
Paolo Bonzini Sept. 25, 2019, 1:49 p.m. UTC | #4
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 mbox series

Patch

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 &&