On Wed, 3 Aug 2022 15:58:51 +0200 Nico Boehr <nrb@xxxxxxxxxxxxx> wrote: > QEMU doesn't provide EQBS/SQBS instructions, so we should check they > result in an exception. > > Signed-off-by: Nico Boehr <nrb@xxxxxxxxxxxxx> Reviewed-by: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx> > --- > s390x/intercept.c | 29 +++++++++++++++++++++++++++++ > 1 file changed, 29 insertions(+) > > diff --git a/s390x/intercept.c b/s390x/intercept.c > index 9e826b6c79ad..48eb2d22a2cc 100644 > --- a/s390x/intercept.c > +++ b/s390x/intercept.c > @@ -197,6 +197,34 @@ static void test_diag318(void) > > } > > +static void test_qbs(void) > +{ > + report_prefix_push("qbs"); > + if (!host_is_qemu()) { > + report_skip("QEMU-only test"); > + report_prefix_pop(); > + return; > + } > + > + report_prefix_push("sqbs"); > + expect_pgm_int(); > + asm volatile( > + " .insn rsy,0xeb000000008a,0,0,0(0)\n" > + : : : "memory", "cc"); > + check_pgm_int_code(PGM_INT_CODE_OPERATION); > + report_prefix_pop(); > + > + report_prefix_push("eqbs"); > + expect_pgm_int(); > + asm volatile( > + " .insn rrf,0xb99c0000,0,0,0,0\n" > + : : : "memory", "cc"); > + check_pgm_int_code(PGM_INT_CODE_OPERATION); > + report_prefix_pop(); > + > + report_prefix_pop(); > +} > + > struct { > const char *name; > void (*func)(void); > @@ -208,6 +236,7 @@ struct { > { "stidp", test_stidp, false }, > { "testblock", test_testblock, false }, > { "diag318", test_diag318, false }, > + { "qbs", test_qbs, false }, > { NULL, NULL, false } > }; >