qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Liu Zhiwei" <zhiwei_liu@linux.alibaba.com>,
	"Alexandre Iooss" <erdnaxe@crans.org>,
	"Chinmay Rath" <rathc@linux.ibm.com>,
	qemu-arm@nongnu.org, "Peter Maydell" <peter.maydell@linaro.org>,
	"Nicholas Piggin" <npiggin@gmail.com>,
	"Ilya Leoshkevich" <iii@linux.ibm.com>,
	"David Hildenbrand" <david@redhat.com>,
	qemu-ppc@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
	qemu-s390x@nongnu.org,
	"Pierrick Bouvier" <pierrick.bouvier@linaro.org>,
	"Bastian Koppelmann" <kbastian@mail.uni-paderborn.de>,
	"Helge Deller" <deller@gmx.de>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Stafford Horne" <shorne@gmail.com>,
	"Mahmoud Mandour" <ma.mandourr@gmail.com>,
	"Artyom Tarasenko" <atar4qemu@gmail.com>,
	"Eduardo Habkost" <eduardo@habkost.net>,
	"Palmer Dabbelt" <palmer@dabbelt.com>,
	"Alistair Francis" <alistair.francis@wdc.com>,
	"Laurent Vivier" <laurent@vivier.eu>,
	"Weiwei Li" <liwei1518@gmail.com>,
	"Daniel Henrique Barboza" <dbarboza@ventanamicro.com>,
	"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
	"Yoshinori Sato" <yoshinori.sato@nifty.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	"Aurelien Jarno" <aurelien@aurel32.net>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Thomas Huth" <thuth@redhat.com>,
	"Max Filippov" <jcmvbkbc@gmail.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Jiaxun Yang" <jiaxun.yang@flygoat.com>,
	"Michael Rolnik" <mrolnik@gmail.com>,
	"Song Gao" <gaosong@loongson.cn>,
	qemu-riscv@nongnu.org, "Aleksandar Rikalo" <arikalo@gmail.com>,
	"Julian Ganz" <neither@nut.email>
Subject: [PATCH 19/35] target/mips: call plugin trap callbacks
Date: Mon, 27 Oct 2025 11:03:26 +0000	[thread overview]
Message-ID: <20251027110344.2289945-20-alex.bennee@linaro.org> (raw)
In-Reply-To: <20251027110344.2289945-1-alex.bennee@linaro.org>

From: Julian Ganz <neither@nut.email>

We recently introduced API for registering callbacks for trap related
events as well as the corresponding hook functions. Due to differences
between architectures, the latter need to be called from target specific
code.

This change places hooks for MIPS targets. We consider the exceptions
NMI and EXT_INTERRUPT to be asynchronous interrupts rather than
exceptions.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Acked-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Julian Ganz <neither@nut.email>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
 target/mips/tcg/system/tlb_helper.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/target/mips/tcg/system/tlb_helper.c b/target/mips/tcg/system/tlb_helper.c
index 1e8901556d6..566924b079e 100644
--- a/target/mips/tcg/system/tlb_helper.c
+++ b/target/mips/tcg/system/tlb_helper.c
@@ -18,6 +18,7 @@
  */
 #include "qemu/osdep.h"
 #include "qemu/bitops.h"
+#include "qemu/plugin.h"
 
 #include "cpu.h"
 #include "internal.h"
@@ -1034,6 +1035,7 @@ void mips_cpu_do_interrupt(CPUState *cs)
     bool update_badinstr = 0;
     target_ulong offset;
     int cause = -1;
+    uint64_t last_pc = env->active_tc.PC;
 
     if (qemu_loglevel_mask(CPU_LOG_INT)
         && cs->exception_index != EXCP_EXT_INTERRUPT) {
@@ -1052,6 +1054,7 @@ void mips_cpu_do_interrupt(CPUState *cs)
         cs->exception_index = EXCP_NONE;
         mips_semihosting(env);
         env->active_tc.PC += env->error_code;
+        qemu_plugin_vcpu_hostcall_cb(cs, last_pc);
         return;
     case EXCP_DSS:
         env->CP0_Debug |= 1 << CP0DB_DSS;
@@ -1336,6 +1339,14 @@ void mips_cpu_do_interrupt(CPUState *cs)
                  env->CP0_Status, env->CP0_Cause, env->CP0_BadVAddr,
                  env->CP0_DEPC);
     }
+    switch (cs->exception_index) {
+    case EXCP_NMI:
+    case EXCP_EXT_INTERRUPT:
+        qemu_plugin_vcpu_interrupt_cb(cs, last_pc);
+        break;
+    default:
+        qemu_plugin_vcpu_exception_cb(cs, last_pc);
+    }
     cs->exception_index = EXCP_NONE;
 }
 
-- 
2.47.3



  parent reply	other threads:[~2025-10-27 11:18 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-27 11:03 [PATCH 00/35] maintainer updates for 8.2 softfeeeze (ci, plugins, semihosting) pre-PR Alex Bennée
2025-10-27 11:03 ` [PATCH 01/35] ci: clean-up remaining bits of armhf builds Alex Bennée
2025-10-27 11:20   ` Philippe Mathieu-Daudé
2025-10-28 12:38   ` Richard Henderson
2025-10-27 11:03 ` [PATCH 02/35] scripts/ci/setup: regenerate yaml Alex Bennée
2025-10-29  8:13   ` Manos Pitsidianakis
2025-10-27 11:03 ` [PATCH 03/35] scripts/ci: move build-environment.yaml up a level Alex Bennée
2025-10-29  8:11   ` Manos Pitsidianakis
2025-10-27 11:03 ` [PATCH 04/35] scripts/ci: allow both Ubuntu or Debian to run upgrade Alex Bennée
2025-10-29  8:18   ` Manos Pitsidianakis
2025-10-27 11:03 ` [PATCH 05/35] tests/lcitool: generate a yaml file for the ppc64le runner Alex Bennée
2025-10-29  8:14   ` Manos Pitsidianakis
2025-10-27 11:03 ` [PATCH 06/35] scripts/ci: modify gitlab runner deb setup Alex Bennée
2025-10-29  8:10   ` Manos Pitsidianakis
2025-10-27 11:03 ` [PATCH 07/35] plugins: add types for callbacks related to certain discontinuities Alex Bennée
2025-10-27 11:03 ` [PATCH 08/35] plugins: add API for registering discontinuity callbacks Alex Bennée
2025-10-27 11:03 ` [PATCH 09/35] plugins: add hooks for new discontinuity related callbacks Alex Bennée
2025-10-27 11:03 ` [PATCH 10/35] contrib/plugins: add plugin showcasing new dicontinuity related API Alex Bennée
2025-10-27 11:03 ` [PATCH 11/35] target/alpha: call plugin trap callbacks Alex Bennée
2025-10-27 11:03 ` [PATCH 12/35] target/arm: " Alex Bennée
2025-10-27 11:03 ` [PATCH 13/35] target/avr: " Alex Bennée
2025-10-27 11:03 ` [PATCH 14/35] target/hppa: " Alex Bennée
2025-10-27 11:03 ` [PATCH 15/35] target/i386: " Alex Bennée
2025-10-27 11:03 ` [PATCH 16/35] target/loongarch: " Alex Bennée
2025-10-27 11:03 ` [PATCH 17/35] target/m68k: " Alex Bennée
2025-10-27 11:03 ` [PATCH 18/35] target/microblaze: " Alex Bennée
2025-10-27 11:03 ` Alex Bennée [this message]
2025-10-27 11:03 ` [PATCH 20/35] target/openrisc: " Alex Bennée
2025-10-27 11:03 ` [PATCH 21/35] target/ppc: " Alex Bennée
2025-10-27 11:03 ` [PATCH 22/35] target/riscv: " Alex Bennée
2025-10-27 11:03 ` [PATCH 23/35] target/rx: " Alex Bennée
2025-10-27 11:03 ` [PATCH 24/35] target/s390x: " Alex Bennée
2025-10-27 11:03 ` [PATCH 25/35] target/sh4: " Alex Bennée
2025-10-27 11:03 ` [PATCH 26/35] target/sparc: " Alex Bennée
2025-10-27 11:03 ` [PATCH 27/35] target/tricore: " Alex Bennée
2025-10-27 11:03 ` [PATCH 28/35] target/xtensa: " Alex Bennée
2025-10-27 11:03 ` [PATCH 29/35] tests: add plugin asserting correctness of discon event's to_pc Alex Bennée
2025-10-27 11:03 ` [PATCH 30/35] tests: add test for double-traps on rv64 Alex Bennée
2025-10-27 11:03 ` [PATCH 31/35] tests: add test with interrupted memory accesses " Alex Bennée
2025-10-27 11:03 ` [PATCH 32/35] plugins/core: add missing QEMU_DISABLE_CFI annotations Alex Bennée
2025-10-27 11:03 ` [PATCH 33/35] configs: drop SBSA_REF from minimal specification Alex Bennée
2025-10-27 11:03 ` [PATCH 34/35] gdbstub: Fix %s formatting Alex Bennée
2025-10-27 11:18   ` Philippe Mathieu-Daudé
2025-10-27 11:03 ` [PATCH 35/35] semihosting: Fix GDB File-I/O FLEN Alex Bennée
2025-10-27 11:29 ` [PATCH 00/35] maintainer updates for 10.2 softfeeeze (ci, plugins, semihosting) pre-PR Alex Bennée

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251027110344.2289945-20-alex.bennee@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=alistair.francis@wdc.com \
    --cc=arikalo@gmail.com \
    --cc=atar4qemu@gmail.com \
    --cc=aurelien@aurel32.net \
    --cc=david@redhat.com \
    --cc=dbarboza@ventanamicro.com \
    --cc=deller@gmx.de \
    --cc=edgar.iglesias@gmail.com \
    --cc=eduardo@habkost.net \
    --cc=erdnaxe@crans.org \
    --cc=gaosong@loongson.cn \
    --cc=iii@linux.ibm.com \
    --cc=jcmvbkbc@gmail.com \
    --cc=jiaxun.yang@flygoat.com \
    --cc=kbastian@mail.uni-paderborn.de \
    --cc=laurent@vivier.eu \
    --cc=liwei1518@gmail.com \
    --cc=ma.mandourr@gmail.com \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=mrolnik@gmail.com \
    --cc=neither@nut.email \
    --cc=npiggin@gmail.com \
    --cc=palmer@dabbelt.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@linaro.org \
    --cc=pierrick.bouvier@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=qemu-riscv@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=rathc@linux.ibm.com \
    --cc=richard.henderson@linaro.org \
    --cc=shorne@gmail.com \
    --cc=thuth@redhat.com \
    --cc=yoshinori.sato@nifty.com \
    --cc=zhiwei_liu@linux.alibaba.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).