Message ID | 20230719094620.363206-9-iii@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | target/s390x: Miscellaneous TCG fixes, part 2 | expand |
On 19/07/2023 11.44, Ilya Leoshkevich wrote: > Add a small test to prevent regressions. > > Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> > --- > tests/tcg/s390x/Makefile.softmmu-target | 1 + > tests/tcg/s390x/cksm.S | 29 +++++++++++++++++++++++++ > 2 files changed, 30 insertions(+) > create mode 100644 tests/tcg/s390x/cksm.S > > diff --git a/tests/tcg/s390x/Makefile.softmmu-target b/tests/tcg/s390x/Makefile.softmmu-target > index 242c7b0f83c..e813e318db9 100644 > --- a/tests/tcg/s390x/Makefile.softmmu-target > +++ b/tests/tcg/s390x/Makefile.softmmu-target > @@ -16,6 +16,7 @@ LDFLAGS=-nostdlib -static > > ASM_TESTS = \ > bal \ > + cksm \ > exrl-ssm-early \ > sam \ > lpsw \ > diff --git a/tests/tcg/s390x/cksm.S b/tests/tcg/s390x/cksm.S > new file mode 100644 > index 00000000000..a45f3ef6bfd > --- /dev/null > +++ b/tests/tcg/s390x/cksm.S > @@ -0,0 +1,29 @@ > + .org 0x8e > +program_interruption_code: > + .org 0x1d0 /* program new PSW */ > + .quad 0,pgm > + .org 0x200 /* lowcore padding */ > + .globl _start > +_start: > + lmg %r0,%r1,cksm_args > + cksm %r2,%r0 > + c %r2,cksm_exp > + jne failure > + cksm %r2,%r15 Clang is smart enough to detect that this is a bad instruction: $ make check-tcg BUILD s390x-softmmu guest-tests tests/tcg/s390x/cksm.S:12:14: error: invalid register pair cksm %r2,%r15 ^ I guess you have to manually create the opcode here? Thomas
On Wed, 2023-07-19 at 16:20 +0200, Thomas Huth wrote: > On 19/07/2023 11.44, Ilya Leoshkevich wrote: > > Add a small test to prevent regressions. > > > > Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> > > --- > > tests/tcg/s390x/Makefile.softmmu-target | 1 + > > tests/tcg/s390x/cksm.S | 29 > > +++++++++++++++++++++++++ > > 2 files changed, 30 insertions(+) > > create mode 100644 tests/tcg/s390x/cksm.S > > > > diff --git a/tests/tcg/s390x/Makefile.softmmu-target > > b/tests/tcg/s390x/Makefile.softmmu-target > > index 242c7b0f83c..e813e318db9 100644 > > --- a/tests/tcg/s390x/Makefile.softmmu-target > > +++ b/tests/tcg/s390x/Makefile.softmmu-target > > @@ -16,6 +16,7 @@ LDFLAGS=-nostdlib -static > > > > ASM_TESTS > > = > > \ > > > > bal > > \ > > + > > cksm > > \ > > exrl-ssm- > > early \ > > > > sam > > \ > > > > lpsw > > \ > > diff --git a/tests/tcg/s390x/cksm.S b/tests/tcg/s390x/cksm.S > > new file mode 100644 > > index 00000000000..a45f3ef6bfd > > --- /dev/null > > +++ b/tests/tcg/s390x/cksm.S > > @@ -0,0 +1,29 @@ > > + .org 0x8e > > +program_interruption_code: > > + .org 0x1d0 /* program new PSW */ > > + .quad 0,pgm > > + .org 0x200 /* lowcore padding */ > > + .globl _start > > +_start: > > + lmg %r0,%r1,cksm_args > > + cksm %r2,%r0 > > + c %r2,cksm_exp > > + jne failure > > + cksm %r2,%r15 > > Clang is smart enough to detect that this is a bad instruction: > > $ make check-tcg > BUILD s390x-softmmu guest-tests > tests/tcg/s390x/cksm.S:12:14: error: invalid register pair > cksm %r2,%r15 > ^ > > I guess you have to manually create the opcode here? > > Thomas Argh, I really need to start testing my submissions with clang. Thanks for noticing, I will fix this.
diff --git a/tests/tcg/s390x/Makefile.softmmu-target b/tests/tcg/s390x/Makefile.softmmu-target index 242c7b0f83c..e813e318db9 100644 --- a/tests/tcg/s390x/Makefile.softmmu-target +++ b/tests/tcg/s390x/Makefile.softmmu-target @@ -16,6 +16,7 @@ LDFLAGS=-nostdlib -static ASM_TESTS = \ bal \ + cksm \ exrl-ssm-early \ sam \ lpsw \ diff --git a/tests/tcg/s390x/cksm.S b/tests/tcg/s390x/cksm.S new file mode 100644 index 00000000000..a45f3ef6bfd --- /dev/null +++ b/tests/tcg/s390x/cksm.S @@ -0,0 +1,29 @@ + .org 0x8e +program_interruption_code: + .org 0x1d0 /* program new PSW */ + .quad 0,pgm + .org 0x200 /* lowcore padding */ + .globl _start +_start: + lmg %r0,%r1,cksm_args + cksm %r2,%r0 + c %r2,cksm_exp + jne failure + cksm %r2,%r15 +failure: + lpswe failure_psw +pgm: + chhsi program_interruption_code,6 /* specification exception? */ + jne failure + lpswe success_psw +cksm_args: + .quad cksm_buf, 16 +cksm_buf: + .quad 0xaaaabbbbcccc0000, 0x12345678 +cksm_exp: + .long 0x89ab1234 + .align 8 +success_psw: + .quad 0x2000000000000,0xfff /* see is_special_wait_psw() */ +failure_psw: + .quad 0x2000000000000,0 /* disabled wait */
Add a small test to prevent regressions. Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> --- tests/tcg/s390x/Makefile.softmmu-target | 1 + tests/tcg/s390x/cksm.S | 29 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 tests/tcg/s390x/cksm.S