On 6/27/22 14:52, Claudio Imbrenda wrote: > On Mon, 27 Jun 2022 14:43:56 +0200 > Janis Schoetterl-Glausch <scgl@xxxxxxxxxxxxx> wrote: > >> According to the architecture, SET PREFIX must try to access the new >> prefix area and recognize an addressing exception if the area is not >> accessible. >> Test that the exception occurs when we try to set a prefix higher >> than the available memory. >> >> Signed-off-by: Janis Schoetterl-Glausch <scgl@xxxxxxxxxxxxx> >> --- >> s390x/intercept.c | 14 ++++++++++++++ >> 1 file changed, 14 insertions(+) >> >> diff --git a/s390x/intercept.c b/s390x/intercept.c >> index 86e57e11..0b90e588 100644 >> --- a/s390x/intercept.c >> +++ b/s390x/intercept.c >> @@ -74,6 +74,20 @@ static void test_spx(void) >> expect_pgm_int(); >> asm volatile(" spx 0(%0) " : : "r"(-8L)); >> check_pgm_int_code(PGM_INT_CODE_ADDRESSING); >> + >> + new_prefix = get_ram_size() & 0x7fffe000; >> + if (get_ram_size() - new_prefix < 2 * PAGE_SIZE) { >> + expect_pgm_int(); >> + asm volatile("spx %0 " : : "Q"(new_prefix)); >> + check_pgm_int_code(PGM_INT_CODE_ADDRESSING); >> + >> + /* >> + * Cannot test inaccessibility of the second page the same way. >> + * If we try to use the last page as first half of the prefix >> + * area and our ram size is a multiple of 8k, after SPX aligns >> + * the address to 8k we have a completely accessible area. >> + */ >> + } > > please add something like: > > else { > report_skip("Inaccessible prefix"); > } > Yeah, good idea. Is there any low effort way of generating an invalid prefix other than > ram_size ? That might then allow for testing the second page also. >> } >> >> /* Test the STORE CPU ADDRESS instruction */ >> >> base-commit: 110c69492b53f0070e1bbce986fb635e72a423b4 >