All of lore.kernel.org
 help / color / mirror / Atom feed
From: Claudio Imbrenda <imbrenda@linux.ibm.com>
To: kvm@vger.kernel.org
Cc: linux-s390@vger.kernel.org, thuth@redhat.com, david@redhat.com,
	borntraeger@de.ibm.com, frankja@linux.ibm.com
Subject: [kvm-unit-tests PATCH v7 3/4] s390x: lib: add SPX and STPX instruction wrapper
Date: Fri, 10 Jan 2020 19:40:49 +0100	[thread overview]
Message-ID: <20200110184050.191506-4-imbrenda@linux.ibm.com> (raw)
In-Reply-To: <20200110184050.191506-1-imbrenda@linux.ibm.com>

Add a wrapper for the SET PREFIX and STORE PREFIX instructions, and
use it instead of using inline assembly.

Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 lib/s390x/asm/arch_def.h | 13 +++++++++++++
 s390x/intercept.c        | 23 ++++++++---------------
 2 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/lib/s390x/asm/arch_def.h b/lib/s390x/asm/arch_def.h
index 1a5e3c6..15a4d49 100644
--- a/lib/s390x/asm/arch_def.h
+++ b/lib/s390x/asm/arch_def.h
@@ -284,4 +284,17 @@ static inline int servc(uint32_t command, unsigned long sccb)
 	return cc;
 }
 
+static inline void set_prefix(uint32_t new_prefix)
+{
+	asm volatile("	spx %0" : : "Q" (new_prefix) : "memory");
+}
+
+static inline uint32_t get_prefix(void)
+{
+	uint32_t current_prefix;
+
+	asm volatile("	stpx %0" : "=Q" (current_prefix));
+	return current_prefix;
+}
+
 #endif
diff --git a/s390x/intercept.c b/s390x/intercept.c
index 3696e33..cd96121 100644
--- a/s390x/intercept.c
+++ b/s390x/intercept.c
@@ -26,13 +26,10 @@ static void test_stpx(void)
 	uint32_t new_prefix = (uint32_t)(intptr_t)pagebuf;
 
 	/* Can we successfully change the prefix? */
-	asm volatile (
-		" stpx	%0\n"
-		" spx	%2\n"
-		" stpx	%1\n"
-		" spx	%0\n"
-		: "+Q"(old_prefix), "+Q"(tst_prefix)
-		: "Q"(new_prefix));
+	old_prefix = get_prefix();
+	set_prefix(new_prefix);
+	tst_prefix = get_prefix();
+	set_prefix(old_prefix);
 	report(old_prefix == 0 && tst_prefix == new_prefix, "store prefix");
 
 	expect_pgm_int();
@@ -63,14 +60,10 @@ static void test_spx(void)
 	 * some facility bits there ... at least some of them should be
 	 * set in our buffer afterwards.
 	 */
-	asm volatile (
-		" stpx	%0\n"
-		" spx	%1\n"
-		" stfl	0\n"
-		" spx	%0\n"
-		: "+Q"(old_prefix)
-		: "Q"(new_prefix)
-		: "memory");
+	old_prefix = get_prefix();
+	set_prefix(new_prefix);
+	asm volatile("	stfl 0" : : : "memory");
+	set_prefix(old_prefix);
 	report(pagebuf[GEN_LC_STFL] != 0, "stfl to new prefix");
 
 	expect_pgm_int();
-- 
2.24.1

  parent reply	other threads:[~2020-01-10 18:41 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-10 18:40 [kvm-unit-tests PATCH v7 0/4] s390x: SCLP Unit test Claudio Imbrenda
2020-01-10 18:40 ` [kvm-unit-tests PATCH v7 1/4] s390x: export sclp_setup_int Claudio Imbrenda
2020-01-10 18:40 ` [kvm-unit-tests PATCH v7 2/4] s390x: sclp: add service call instruction wrapper Claudio Imbrenda
2020-01-10 18:40 ` Claudio Imbrenda [this message]
2020-01-13  9:42   ` [kvm-unit-tests PATCH v7 3/4] s390x: lib: add SPX and STPX " Janosch Frank
2020-01-13 12:27     ` Claudio Imbrenda
2020-01-13 10:42   ` David Hildenbrand
2020-01-10 18:40 ` [kvm-unit-tests PATCH v7 4/4] s390x: SCLP unit test Claudio Imbrenda
2020-01-13 11:00   ` David Hildenbrand
2020-01-13 12:33     ` Claudio Imbrenda
2020-01-13 12:48       ` David Hildenbrand
2020-01-13 12:58         ` Claudio Imbrenda
2020-01-13 13:10           ` David Hildenbrand
2020-01-13 14:05             ` Claudio Imbrenda
2020-01-13 14:43               ` David Hildenbrand
2020-01-13 15:24                 ` Claudio Imbrenda
2020-01-13 16:06                   ` David Hildenbrand
2020-01-13 16:17                     ` Claudio Imbrenda
2020-01-15  9:57                       ` David Hildenbrand

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=20200110184050.191506-4-imbrenda@linux.ibm.com \
    --to=imbrenda@linux.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=david@redhat.com \
    --cc=frankja@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=thuth@redhat.com \
    /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.