From: Pierre Morel <pmorel@xxxxxxxxxxxxx> stsi_get_fc is now needed in multiple tests. As it does not need to store information but only returns the machine level, suppress the address parameter. Signed-off-by: Pierre Morel <pmorel@xxxxxxxxxxxxx> Reviewed-by: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx> Reviewed-by: Janosch Frank <frankja@xxxxxxxxxxxxx> Link: https://lore.kernel.org/kvm/1628612544-25130-3-git-send-email-pmorel@xxxxxxxxxxxxx/ Signed-off-by: Janosch Frank <frankja@xxxxxxxxxxxxx> --- lib/s390x/asm/arch_def.h | 16 ++++++++++++++++ s390x/stsi.c | 20 ++------------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/lib/s390x/asm/arch_def.h b/lib/s390x/asm/arch_def.h index 15cf7d48..2f70d840 100644 --- a/lib/s390x/asm/arch_def.h +++ b/lib/s390x/asm/arch_def.h @@ -328,6 +328,22 @@ static inline int stsi(void *addr, int fc, int sel1, int sel2) return cc; } +static inline unsigned long stsi_get_fc(void) +{ + register unsigned long r0 asm("0") = 0; + register unsigned long r1 asm("1") = 0; + int cc; + + asm volatile("stsi 0\n" + "ipm %[cc]\n" + "srl %[cc],28\n" + : "+d" (r0), [cc] "=d" (cc) + : "d" (r1) + : "cc", "memory"); + assert(!cc); + return r0 >> 28; +} + static inline int servc(uint32_t command, unsigned long sccb) { int cc; diff --git a/s390x/stsi.c b/s390x/stsi.c index 87d48047..391f8849 100644 --- a/s390x/stsi.c +++ b/s390x/stsi.c @@ -71,28 +71,12 @@ static void test_priv(void) report_prefix_pop(); } -static inline unsigned long stsi_get_fc(void *addr) -{ - register unsigned long r0 asm("0") = 0; - register unsigned long r1 asm("1") = 0; - int cc; - - asm volatile("stsi 0(%[addr])\n" - "ipm %[cc]\n" - "srl %[cc],28\n" - : "+d" (r0), [cc] "=d" (cc) - : "d" (r1), [addr] "a" (addr) - : "cc", "memory"); - assert(!cc); - return r0 >> 28; -} - static void test_fc(void) { report(stsi(pagebuf, 7, 0, 0) == 3, "invalid fc"); report(stsi(pagebuf, 1, 0, 1) == 3, "invalid selector 1"); report(stsi(pagebuf, 1, 1, 0) == 3, "invalid selector 2"); - report(stsi_get_fc(pagebuf) >= 2, "query fc >= 2"); + report(stsi_get_fc() >= 2, "query fc >= 2"); } static void test_3_2_2(void) @@ -112,7 +96,7 @@ static void test_3_2_2(void) report_prefix_push("3.2.2"); /* Is the function code available at all? */ - if (stsi_get_fc(pagebuf) < 3) { + if (stsi_get_fc() < 3) { report_skip("Running under lpar, no level 3 to test."); goto out; } -- 2.31.1