[kvm-unit-tests PATCH v2 3/4] s390x: Move stsi to library

Janosch Frank
2019-08-21T10:48:40Z

It's needed in multiple tests now.

Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
---
lib/s390x/asm/arch_def.h | 16 ++++++++++++++++
s390x/skey.c | 18 ------------------
2 files changed, 16 insertions(+), 18 deletions(-)

diff --git a/lib/s390x/asm/arch_def.h b/lib/s390x/asm/arch_def.h
index 4bbb428..5f8f45e 100644
--- a/lib/s390x/asm/arch_def.h
+++ b/lib/s390x/asm/arch_def.h
@@ -240,4 +240,20 @@ static inline void enter_pstate(void)
load_psw_mask(mask);
}

+static inline int stsi(void *addr, int fc, int sel1, int sel2)
+{
+ register int r0 asm("0") = (fc << 28) | sel1;
+ register int r1 asm("1") = sel2;
+ int cc;
+
+ asm volatile(
+ "stsi 0(%3)\n"
+ "ipm %[cc]\n"
+ "srl %[cc],28\n"
+ : "+d" (r0), [cc] "=d" (cc)
+ : "d" (r1), "a" (addr)
+ : "cc", "memory");
+ return cc;
+}
+
#endif
diff --git a/s390x/skey.c b/s390x/skey.c
index b1e11af..fd4fcc7 100644
--- a/s390x/skey.c
+++ b/s390x/skey.c
@@ -70,24 +70,6 @@ static void test_set(void)
skey.str.acc == ret.str.acc && skey.str.fp == ret.str.fp);
}

-static inline int stsi(void *addr, int fc, int sel1, int sel2)
-{
- register int r0 asm("0") = (fc << 28) | sel1;
- register int r1 asm("1") = sel2;
- int rc = 0;
-
- asm volatile(
- " stsi 0(%3)\n"
- " jz 0f\n"
- " lhi %1,-1\n"
- "0:\n"
- : "+d" (r0), "+d" (rc)
- : "d" (r1), "a" (addr)
- : "cc", "memory");
-
- return rc;
-}
-
/* Returns true if we are running under z/VM 6.x */
static bool check_for_zvm6(void)
{
--
2.17.0