From: Nina Schoetterl-Glausch Extract reset_guest from spec_ex-sie into the lib. After reset_guest() the snippet can be executed again. Signed-off-by: Nina Schoetterl-Glausch Signed-off-by: Christoph Schlameuss --- lib/s390x/snippet.h | 6 ++++++ s390x/spec_ex-sie.c | 10 ++-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/s390x/snippet.h b/lib/s390x/snippet.h index 910849aa186ce2f94c64ac1f40f8d6d7cdc36a1f..6f611de510d832f23384739606da13e71de3d6fd 100644 --- a/lib/s390x/snippet.h +++ b/lib/s390x/snippet.h @@ -83,6 +83,12 @@ static inline void snippet_init(struct vm *vm, const char *gbin, vm->sblk->ictl = ICTL_OPEREXC | ICTL_PINT; } +static inline void reset_guest(struct vm *vm) +{ + vm->sblk->gpsw = snippet_psw; + vm->sblk->icptcode = 0; +} + /* * Sets up a snippet UV/PV guest on top of an existing and initialized * SIE vm struct. diff --git a/s390x/spec_ex-sie.c b/s390x/spec_ex-sie.c index fe2f23ee3d84fa144416808cb4b353627fe87f3d..75625ecffc4a5a09ff7ef6136b7f1120a831a8c5 100644 --- a/s390x/spec_ex-sie.c +++ b/s390x/spec_ex-sie.c @@ -31,12 +31,6 @@ static void setup_guest(void) SNIPPET_LEN(c, spec_ex), SNIPPET_UNPACK_OFF); } -static void reset_guest(void) -{ - vm.sblk->gpsw = snippet_psw; - vm.sblk->icptcode = 0; -} - static void test_spec_ex_sie(void) { const char *msg; @@ -45,7 +39,7 @@ static void test_spec_ex_sie(void) report_prefix_push("SIE spec ex interpretation"); report_prefix_push("off"); - reset_guest(); + reset_guest(&vm); sie(&vm); /* interpretation off -> initial exception must cause interception */ report(vm.sblk->icptcode == ICPT_PROGI @@ -56,7 +50,7 @@ static void test_spec_ex_sie(void) report_prefix_push("on"); vm.sblk->ecb |= ECB_SPECI; - reset_guest(); + reset_guest(&vm); sie(&vm); /* interpretation on -> configuration dependent if initial exception causes * interception, but invalid new program PSW must -- 2.53.0