Message ID | 20211007085027.13050-8-frankja@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | s390x: Cleanup and maintenance 2 | expand |
On 07/10/2021 10.50, Janosch Frank wrote: > On success r2 + 1 should be 0, let's also check for that. > > Signed-off-by: Janosch Frank <frankja@linux.ibm.com> > Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com> > --- > s390x/sthyi.c | 20 +++++++++++--------- > 1 file changed, 11 insertions(+), 9 deletions(-) > > diff --git a/s390x/sthyi.c b/s390x/sthyi.c > index db90b56f..4b153bf4 100644 > --- a/s390x/sthyi.c > +++ b/s390x/sthyi.c > @@ -24,16 +24,16 @@ static inline int sthyi(uint64_t vaddr, uint64_t fcode, uint64_t *rc, > { > register uint64_t code asm("0") = fcode; > register uint64_t addr asm("2") = vaddr; > - register uint64_t rc3 asm("3") = 0; > + register uint64_t rc3 asm("3") = 42; > int cc = 0; > > - asm volatile(".insn rre,0xB2560000,%[r1],%[r2]\n" > - "ipm %[cc]\n" > - "srl %[cc],28\n" > - : [cc] "=d" (cc) > - : [code] "d" (code), [addr] "a" (addr), [r1] "i" (r1), > - [r2] "i" (r2) > - : "memory", "cc", "r3"); > + asm volatile( > + ".insn rre,0xB2560000,%[r1],%[r2]\n" > + "ipm %[cc]\n" > + "srl %[cc],28\n" > + : [cc] "=d" (cc), "+d" (rc3) > + : [code] "d" (code), [addr] "a" (addr), [r1] "i" (r1), [r2] "i" (r2) > + : "memory", "cc"); > if (rc) > *rc = rc3; > return cc; > @@ -139,16 +139,18 @@ static void test_fcode0(void) > struct sthyi_hdr_sctn *hdr; > struct sthyi_mach_sctn *mach; > struct sthyi_par_sctn *par; > + uint64_t rc = 42; > > /* Zero destination memory. */ > memset(pagebuf, 0, PAGE_SIZE); > > report_prefix_push("fcode 0"); > - sthyi((uint64_t)pagebuf, 0, NULL, 0, 2); > + sthyi((uint64_t)pagebuf, 0, &rc, 0, 2); > hdr = (void *)pagebuf; > mach = (void *)pagebuf + hdr->INFMOFF; > par = (void *)pagebuf + hdr->INFPOFF; > > + report(!rc, "r2 + 1 == 0"); Could you please check for "rc == CODE_SUCCES" (since we've got that for this purpose)? With that change: Reviewed-by: Thomas Huth <thuth@redhat.com>
On 10/7/21 11:11, Thomas Huth wrote: > On 07/10/2021 10.50, Janosch Frank wrote: >> On success r2 + 1 should be 0, let's also check for that. >> >> Signed-off-by: Janosch Frank <frankja@linux.ibm.com> >> Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com> >> --- >> s390x/sthyi.c | 20 +++++++++++--------- >> 1 file changed, 11 insertions(+), 9 deletions(-) >> >> diff --git a/s390x/sthyi.c b/s390x/sthyi.c >> index db90b56f..4b153bf4 100644 >> --- a/s390x/sthyi.c >> +++ b/s390x/sthyi.c >> @@ -24,16 +24,16 @@ static inline int sthyi(uint64_t vaddr, uint64_t fcode, uint64_t *rc, >> { >> register uint64_t code asm("0") = fcode; >> register uint64_t addr asm("2") = vaddr; >> - register uint64_t rc3 asm("3") = 0; >> + register uint64_t rc3 asm("3") = 42; >> int cc = 0; >> >> - asm volatile(".insn rre,0xB2560000,%[r1],%[r2]\n" >> - "ipm %[cc]\n" >> - "srl %[cc],28\n" >> - : [cc] "=d" (cc) >> - : [code] "d" (code), [addr] "a" (addr), [r1] "i" (r1), >> - [r2] "i" (r2) >> - : "memory", "cc", "r3"); >> + asm volatile( >> + ".insn rre,0xB2560000,%[r1],%[r2]\n" >> + "ipm %[cc]\n" >> + "srl %[cc],28\n" >> + : [cc] "=d" (cc), "+d" (rc3) >> + : [code] "d" (code), [addr] "a" (addr), [r1] "i" (r1), [r2] "i" (r2) >> + : "memory", "cc"); >> if (rc) >> *rc = rc3; >> return cc; >> @@ -139,16 +139,18 @@ static void test_fcode0(void) >> struct sthyi_hdr_sctn *hdr; >> struct sthyi_mach_sctn *mach; >> struct sthyi_par_sctn *par; >> + uint64_t rc = 42; >> >> /* Zero destination memory. */ >> memset(pagebuf, 0, PAGE_SIZE); >> >> report_prefix_push("fcode 0"); >> - sthyi((uint64_t)pagebuf, 0, NULL, 0, 2); >> + sthyi((uint64_t)pagebuf, 0, &rc, 0, 2); >> hdr = (void *)pagebuf; >> mach = (void *)pagebuf + hdr->INFMOFF; >> par = (void *)pagebuf + hdr->INFPOFF; >> >> + report(!rc, "r2 + 1 == 0"); > > Could you please check for "rc == CODE_SUCCES" (since we've got that for > this purpose)? I'll do one better and also check for !cc > > With that change: > Reviewed-by: Thomas Huth <thuth@redhat.com> > Thanks!
diff --git a/s390x/sthyi.c b/s390x/sthyi.c index db90b56f..4b153bf4 100644 --- a/s390x/sthyi.c +++ b/s390x/sthyi.c @@ -24,16 +24,16 @@ static inline int sthyi(uint64_t vaddr, uint64_t fcode, uint64_t *rc, { register uint64_t code asm("0") = fcode; register uint64_t addr asm("2") = vaddr; - register uint64_t rc3 asm("3") = 0; + register uint64_t rc3 asm("3") = 42; int cc = 0; - asm volatile(".insn rre,0xB2560000,%[r1],%[r2]\n" - "ipm %[cc]\n" - "srl %[cc],28\n" - : [cc] "=d" (cc) - : [code] "d" (code), [addr] "a" (addr), [r1] "i" (r1), - [r2] "i" (r2) - : "memory", "cc", "r3"); + asm volatile( + ".insn rre,0xB2560000,%[r1],%[r2]\n" + "ipm %[cc]\n" + "srl %[cc],28\n" + : [cc] "=d" (cc), "+d" (rc3) + : [code] "d" (code), [addr] "a" (addr), [r1] "i" (r1), [r2] "i" (r2) + : "memory", "cc"); if (rc) *rc = rc3; return cc; @@ -139,16 +139,18 @@ static void test_fcode0(void) struct sthyi_hdr_sctn *hdr; struct sthyi_mach_sctn *mach; struct sthyi_par_sctn *par; + uint64_t rc = 42; /* Zero destination memory. */ memset(pagebuf, 0, PAGE_SIZE); report_prefix_push("fcode 0"); - sthyi((uint64_t)pagebuf, 0, NULL, 0, 2); + sthyi((uint64_t)pagebuf, 0, &rc, 0, 2); hdr = (void *)pagebuf; mach = (void *)pagebuf + hdr->INFMOFF; par = (void *)pagebuf + hdr->INFPOFF; + report(!rc, "r2 + 1 == 0"); test_fcode0_hdr(hdr); test_fcode0_mach(mach); test_fcode0_par(par);