aboutsummaryrefslogtreecommitdiff
path: root/target/s390x/helper.h
diff options
context:
space:
mode:
authorDavid Hildenbrand <david@redhat.com>2020-09-18 10:51:22 +0200
committerCornelia Huck <cohuck@redhat.com>2020-10-02 13:52:49 +0200
commit20d143e2cab8b597bbdb7a15f123d9704fa8db18 (patch)
treea9b77da036804108c9914a126497db49def401ee /target/s390x/helper.h
parentfabdada9357b9cfd980c7744ddce47e34600bbef (diff)
s390x/tcg: Implement MONITOR CALL
Recent upstream Linux uses the MONITOR CALL instruction for things like BUG_ON() and WARN_ON(). We currently inject an operation exception when we hit a MONITOR CALL instruction - which is wrong, as the instruction is not glued to specific CPU features. Doing a simple WARN_ON_ONCE() currently results in a panic: [ 18.162801] illegal operation: 0001 ilc:2 [#1] SMP [ 18.162889] Modules linked in: [...] [ 18.165476] Kernel panic - not syncing: Fatal exception: panic_on_oops With a proper implementation, we now get: [ 18.242754] ------------[ cut here ]------------ [ 18.242855] WARNING: CPU: 7 PID: 1 at init/main.c:1534 [...] [ 18.242919] Modules linked in: [...] [ 18.246262] ---[ end trace a420477d71dc97b4 ]--- [ 18.259014] Freeing unused kernel memory: 4220K Reported-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20200918085122.26132-1-david@redhat.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Diffstat (limited to 'target/s390x/helper.h')
-rw-r--r--target/s390x/helper.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/target/s390x/helper.h b/target/s390x/helper.h
index b7887b552b..55bd1551e6 100644
--- a/target/s390x/helper.h
+++ b/target/s390x/helper.h
@@ -349,4 +349,5 @@ DEF_HELPER_3(sic, void, env, i64, i64)
DEF_HELPER_3(rpcit, void, env, i32, i32)
DEF_HELPER_5(pcistb, void, env, i32, i32, i64, i32)
DEF_HELPER_4(mpcifc, void, env, i32, i64, i32)
+DEF_HELPER_3(monitor_call, void, env, i64, i32)
#endif