From: Thomas Huth <thuth@redhat.com>
To: Claudio Imbrenda <imbrenda@linux.ibm.com>
Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org,
david@redhat.com, borntraeger@de.ibm.com, frankja@linux.ibm.com
Subject: Re: [kvm-unit-tests PATCH v6 3/4] s390x: lib: add SPX and STPX instruction wrapper
Date: Thu, 9 Jan 2020 17:58:11 +0100 [thread overview]
Message-ID: <3dc2cf13-4829-53cd-a0a6-734fdddeb0ac@redhat.com> (raw)
In-Reply-To: <20200109175027.362d8440@p-imbrenda>
On 09/01/2020 17.50, Claudio Imbrenda wrote:
> On Thu, 9 Jan 2020 17:43:55 +0100
> Thomas Huth <thuth@redhat.com> wrote:
>
>> On 09/01/2020 17.16, Claudio Imbrenda wrote:
>>> Add a wrapper for the SET PREFIX and STORE PREFIX instructions, and
>>> use it instead of using inline assembly everywhere.
>>>
>>> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
>>> ---
>>> lib/s390x/asm/arch_def.h | 10 ++++++++++
>>> s390x/intercept.c | 33 +++++++++++++--------------------
>>> 2 files changed, 23 insertions(+), 20 deletions(-)
>>>
>>> diff --git a/lib/s390x/asm/arch_def.h b/lib/s390x/asm/arch_def.h
>>> index 1a5e3c6..465fe0f 100644
>>> --- a/lib/s390x/asm/arch_def.h
>>> +++ b/lib/s390x/asm/arch_def.h
>>> @@ -284,4 +284,14 @@ static inline int servc(uint32_t command,
>>> unsigned long sccb) return cc;
>>> }
>>>
>>> +static inline void spx(uint32_t *new_prefix)
>>
>> Looking at this a second time ... why is new_prefix a pointer? A
>> normal value should be sufficient here, shouldn't it?
>
> no. if you look at the code in the same patch, intercept.c at some
> points needs to pass "wrong" pointers to spx and stpx in order to test
> them, so this needs to be a pointer
>
> the instructions themselves expect pointers (base register + offset)
Ah, you're right, that "Q" constraint always confuses me... I guess you
could do it without pointers when using the "r" constraint, but it's
likely better to do it the same way as stpx, so your patch should be fine.
>>> +{
>>> + asm volatile("spx %0" : : "Q" (*new_prefix) : "memory");
>>> +}
>>> +
>>> +static inline void stpx(uint32_t *current_prefix)
>>> +{
>>> + asm volatile("stpx %0" : "=Q" (*current_prefix));
>>> +}
>>> +
Reviewed-by: Thomas Huth <thuth@redhat.com>
next prev parent reply other threads:[~2020-01-09 16:58 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-09 16:16 [kvm-unit-tests PATCH v6 0/4] s390x: SCLP Unit test Claudio Imbrenda
2020-01-09 16:16 ` [kvm-unit-tests PATCH v6 1/4] s390x: export sclp_setup_int Claudio Imbrenda
2020-01-09 16:16 ` [kvm-unit-tests PATCH v6 2/4] s390x: sclp: add service call instruction wrapper Claudio Imbrenda
2020-01-09 16:16 ` [kvm-unit-tests PATCH v6 3/4] s390x: lib: add SPX and STPX " Claudio Imbrenda
2020-01-09 16:43 ` Thomas Huth
2020-01-09 16:50 ` Claudio Imbrenda
2020-01-09 16:58 ` Thomas Huth [this message]
2020-01-09 17:05 ` Janosch Frank
2020-01-09 17:13 ` Claudio Imbrenda
2020-01-09 17:27 ` Janosch Frank
2020-01-09 17:09 ` Claudio Imbrenda
2020-01-09 16:16 ` [kvm-unit-tests PATCH v6 4/4] s390x: SCLP unit test Claudio Imbrenda
2020-01-09 17:44 ` Janosch Frank
2020-01-09 18:00 ` Claudio Imbrenda
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=3dc2cf13-4829-53cd-a0a6-734fdddeb0ac@redhat.com \
--to=thuth@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-s390@vger.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.