On 29.05.2017 12:17, David Hildenbrand wrote: > On 29.05.2017 12:06, Thomas Huth wrote: [...] >> s390x/Makefile | 1 + >> s390x/intercept.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> 2 files changed, 100 insertions(+) >> create mode 100644 s390x/intercept.c > > I think you should add that to s390x/unittests.cfg as well. (running all > tests) Ooops, right, forgot to add that :-/ >> diff --git a/s390x/intercept.c b/s390x/intercept.c >> new file mode 100644 >> index 0000000..b0057e3 >> --- /dev/null >> +++ b/s390x/intercept.c >> @@ -0,0 +1,99 @@ >> +/* >> + * Interception tests - for s390x CPU instruction that cause a VM exit >> + * >> + * Copyright (c) 2017 Red Hat Inc >> + * >> + * Authors: >> + * Thomas Huth <thuth@xxxxxxxxxx> >> + * >> + * This code is free software; you can redistribute it and/or modify it >> + * under the terms of the GNU Library General Public License version 2. >> + */ >> +#include <libcflat.h> >> +#include <asm/page.h> >> + >> +static uint8_t pagebuf[PAGE_SIZE * 2] __attribute__((aligned(PAGE_SIZE))); >> + >> +/* Test the SET PREFIX and STORE PREFIX instructions */ >> +static void test_prefix(void) >> +{ >> + uint32_t old_prefix; >> + uint32_t new_prefix = (uint32_t)(intptr_t)pagebuf; >> + >> + memset(pagebuf, 0, PAGE_SIZE * 2); >> + >> + /* >> + * Temporarily change the prefix page to our buffer, and store >> + * some facility bits there ... at least some of them should be >> + * set in our buffer afterwards. >> + */ >> + asm volatile ( >> + " stpx %0\n" >> + " spx %1\n" >> + " stfl 0\n" > > you could add another stpx to tmp_prefix here and test below if stpx > actually return the correct value (e.g. not simply always 0). Good idea, will do that! >> + " spx %0\n" >> + : "=m"(old_prefix) : "m"(new_prefix) : "memory"); >> + report("spx + stfl", pagebuf[200] != 0); > > I have a patch that introduced the struct lowcore and generates > asm-offsets, will post that soon. OK, I just saw your "generate asm offsets for the lowcore" on the list ... will have a look at that... Thomas