On Mon, 13 Jan 2020 12:00:00 +0100 David Hildenbrand <david@xxxxxxxxxx> wrote: > > +/** > > + * Test some bits in the instruction format that are specified to > > be ignored. > > + */ > > +static void test_instbits(void) > > +{ > > + SCCBHeader *h = (SCCBHeader *)pagebuf; > > + int cc; > > + > > + expect_pgm_int(); > > + sclp_mark_busy(); > > + h->length = 8; > > + sclp_setup_int(); > > + > > + asm volatile( > > + " .insn rre,0xb2204200,%1,%2\n" /* servc > > %1,%2 */ > > + " ipm %0\n" > > + " srl %0,28" > > + : "=&d" (cc) : "d" (valid_code), "a" > > (__pa(pagebuf)) > > + : "cc", "memory"); > > + if (lc->pgm_int_code) { > > + sclp_handle_ext(); > > + cc = 1; > > + } else if (!cc) > > + > > I wonder if something like the following would be possible: > > expect_pgm_int(); > ... > asm volatiole(); > ... > sclp_wait_busy(); > check_pgm_int_code(PGM_INT_CODE_SPECIFICATION); we do not expect a specification exception, if that happens it's a bug and the test should rightfully fail. > We would have to clear "sclp_busy" when we get a progam interrupt on a > servc instruction - shouldn't be too hard to add to the program > exception handler. Sure that could be done, but is it worth it to rework the program interrupt handler only for one unit test? [...] > > + valid_code = 0; > > This can be dropped because ... > > > + report_abort("READ_SCP_INFO failed"); > > ... you abort here. will fix