All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pekka Enberg <penberg@kernel.org>
To: Brian Gerst <brgerst@gmail.com>
Cc: hpa@zytor.com, x86@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 07/11] x86-64: Simplify constraints for fxsave/fxtstor
Date: Mon, 30 Aug 2010 08:56:40 +0300	[thread overview]
Message-ID: <4C7B4818.1090106@kernel.org> (raw)
In-Reply-To: <AANLkTim1-nFHQNjiAtcBObz9nX5T=oMQWjN-3m6bt+Ur@mail.gmail.com>

  On 8/30/10 2:44 AM, Brian Gerst wrote:
> On Sun, Aug 29, 2010 at 2:45 PM, Pekka Enberg<penberg@kernel.org>  wrote:
>> On Sat, Aug 28, 2010 at 7:04 PM, Brian Gerst<brgerst@gmail.com>  wrote:
>>> Use the "R" constraint (legacy register) instead of listing all the
>>> possible registers.  Clean up the comments as well.
>>>
>>> Signed-off-by: Brian Gerst<brgerst@gmail.com>
>>> ---
>>>   arch/x86/include/asm/i387.h |   44 ++++++++++++++++--------------------------
>>>   1 files changed, 17 insertions(+), 27 deletions(-)
>>>
>>> diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h
>>> index 8b40a83..768fcb2 100644
>>> --- a/arch/x86/include/asm/i387.h
>>> +++ b/arch/x86/include/asm/i387.h
>>> @@ -81,6 +81,7 @@ static inline int fxrstor_checking(struct i387_fxsave_struct *fx)
>>>   {
>>>         int err;
>>>
>>> +       /* See comment in fxsave() below. */
>>>         asm volatile("1:  rex64/fxrstor (%[fx])\n\t"
>>>                      "2:\n"
>>>                      ".section .fixup,\"ax\"\n"
>>> @@ -89,11 +90,7 @@ static inline int fxrstor_checking(struct i387_fxsave_struct *fx)
>>>                      ".previous\n"
>>>                      _ASM_EXTABLE(1b, 3b)
>>>                      : [err] "=r" (err)
>>> -#if 0 /* See comment in fxsave() below. */
>>> -                    : [fx] "r" (fx), "m" (*fx), "0" (0));
>>> -#else
>>> -                    : [fx] "cdaSDb" (fx), "m" (*fx), "0" (0));
>>> -#endif
>>> +                    : [fx] "R" (fx), "m" (*fx), "0" (0));
>> Please correct me if I'm wrong but "legacy registers" also include bp
>> and sp that are not part of the original constraints:
>>
>> http://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html
>>
>> So why is it OK to use "R" here?
> There is no constraint to explicitly request %bp (or %sp), but there
> is no reason it could not be used.  The compiler would never choose
> %sp for "R" for the same reason it wouldn't for "r": it's not
> available as a general purpose register.
Yeah, if I try to force GCC to use bp or sp, it will complain that it 
runs out of legacy registers:

error: can't find a register in class `LEGACY_REGS' while reloading `asm'

which makes sense as it knows that sp and bp are used by the function 
that contains the inline asm.

Acked-by: Pekka Enberg <penberg@kernel.org>

             Pekka

  reply	other threads:[~2010-08-30  5:56 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-28 16:04 x86: FPU cleanups Brian Gerst
2010-08-28 16:04 ` [PATCH 01/11] x86: Use correct type for %cr4 Brian Gerst
2010-08-29 18:24   ` Pekka Enberg
2010-08-28 16:04 ` [PATCH 02/11] x86: Merge fpu_init() Brian Gerst
2010-08-29 18:29   ` Pekka Enberg
2010-08-30  0:44     ` Brian Gerst
2010-08-28 16:04 ` [PATCH 03/11] x86: Merge tolerant_fwait() Brian Gerst
2010-08-29 18:32   ` Pekka Enberg
2010-08-30  0:35     ` Brian Gerst
2010-08-30  5:47       ` Pekka Enberg
2010-08-28 16:04 ` [PATCH 04/11] x86: Merge __save_init_fpu() Brian Gerst
2010-08-29 18:33   ` Pekka Enberg
2010-08-28 16:04 ` [PATCH 05/11] x86-64: Disable preemption when using TS_USEDFPU Brian Gerst
2010-08-29 18:38   ` Pekka Enberg
2010-08-28 16:04 ` [PATCH 06/11] x86-64: Fix %cs value in convert_from_fxsr() Brian Gerst
2010-08-29 18:41   ` Pekka Enberg
2010-08-30  0:25     ` Brian Gerst
2010-08-30  6:44       ` Pekka Enberg
2010-08-30 11:38         ` Brian Gerst
2010-08-28 16:04 ` [PATCH 07/11] x86-64: Simplify constraints for fxsave/fxtstor Brian Gerst
2010-08-29 18:45   ` Pekka Enberg
2010-08-29 23:44     ` Brian Gerst
2010-08-30  5:56       ` Pekka Enberg [this message]
2010-08-28 16:04 ` [PATCH 08/11] x86-32: Remove math_emulate stub Brian Gerst
2010-08-29 18:47   ` Pekka Enberg
2010-08-28 16:04 ` [PATCH 09/11] x86: Merge fpu_save_init() Brian Gerst
2010-08-29 18:54   ` Pekka Enberg
2010-08-28 16:04 ` [PATCH 10/11] x86: Remove unnecessary ifdefs from i387 code Brian Gerst
2010-08-29 19:00   ` Pekka Enberg
2010-08-29 23:38     ` Brian Gerst
2010-08-30  5:44       ` Pekka Enberg
2010-08-30 11:21         ` Brian Gerst
2010-08-30 11:25           ` Pekka Enberg
2010-08-28 16:04 ` [PATCH 11/11] x86: Remove PSHUFB_XMM5_* macros Brian Gerst
2010-08-29 19:02   ` Pekka Enberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C7B4818.1090106@kernel.org \
    --to=penberg@kernel.org \
    --cc=brgerst@gmail.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.