All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
To: qemu-devel@nongnu.org
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Michael Davidsaver" <mdavidsaver@gmail.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Philippe Mathieu-Daudé" <f4bug@amsat.org>
Subject: [PATCH v5 01/31] target/arm: Implement arm_v7m_cpu_has_work()
Date: Mon, 20 Sep 2021 23:44:17 +0200	[thread overview]
Message-ID: <20210920214447.2998623-2-f4bug@amsat.org> (raw)
In-Reply-To: <20210920214447.2998623-1-f4bug@amsat.org>

Implement SysemuCPUOps::has_work() handler for the ARM v7M CPU.

See the comments added in commit 7ecdaa4a963 ("armv7m: Fix
condition check for taking exceptions") which eventually
forgot to implement this has_work() handler:

  * ARMv7-M interrupt masking works differently than -A or -R.
  * There is no FIQ/IRQ distinction.

The NVIC signal any pending interrupt by raising ARM_CPU_IRQ
(see commit 56b7c66f498: "armv7m: QOMify the armv7m container")
which ends setting the CPU_INTERRUPT_HARD bit in interrupt_request.

Thus arm_v7m_cpu_has_work() implementation is thus quite trivial,
we simply need to check for this bit.

Cc: Peter Maydell <peter.maydell@linaro.org>
Cc: Michael Davidsaver <mdavidsaver@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 target/arm/cpu_tcg.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/target/arm/cpu_tcg.c b/target/arm/cpu_tcg.c
index 0d5adccf1a7..da348938407 100644
--- a/target/arm/cpu_tcg.c
+++ b/target/arm/cpu_tcg.c
@@ -23,6 +23,11 @@
 #if !defined(CONFIG_USER_ONLY) || !defined(TARGET_AARCH64)
 
 #if !defined(CONFIG_USER_ONLY) && defined(CONFIG_TCG)
+static bool arm_v7m_cpu_has_work(CPUState *cs)
+{
+    return cs->interrupt_request & CPU_INTERRUPT_HARD;
+}
+
 static bool arm_v7m_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 {
     CPUClass *cc = CPU_GET_CLASS(cs);
@@ -920,6 +925,7 @@ static void arm_v7m_class_init(ObjectClass *oc, void *data)
 
     acc->info = data;
 #ifdef CONFIG_TCG
+    cc->has_work = arm_v7m_cpu_has_work;
     cc->tcg_ops = &arm_v7m_tcg_ops;
 #endif /* CONFIG_TCG */
 
-- 
2.31.1



  reply	other threads:[~2021-09-20 22:11 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-20 21:44 [PATCH v5 00/31] accel: Move has_work() from SysemuCPUOps to AccelOpsClass Philippe Mathieu-Daudé
2021-09-20 21:44 ` Philippe Mathieu-Daudé [this message]
2021-09-21  9:34   ` [PATCH v5 01/31] target/arm: Implement arm_v7m_cpu_has_work() Peter Maydell
2021-09-21  9:45     ` Philippe Mathieu-Daudé
2021-09-23 17:17       ` Philippe Mathieu-Daudé
2021-09-23 18:01         ` Peter Maydell
2021-09-23 18:06           ` Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 02/31] accel/tcg: Restrict cpu_handle_halt() to sysemu Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 03/31] hw/core: Restrict cpu_has_work() " Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 04/31] hw/core: Un-inline cpu_has_work() Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 05/31] sysemu: Introduce AccelOpsClass::has_work() Philippe Mathieu-Daudé
2021-09-20 21:58   ` Richard Henderson
2021-09-23 17:17     ` Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 06/31] accel/kvm: Implement AccelOpsClass::has_work() Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 07/31] accel/whpx: " Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 08/31] accel/tcg: Implement AccelOpsClass::has_work() as stub Philippe Mathieu-Daudé
2021-09-20 22:01   ` Richard Henderson
2021-09-23 17:18     ` Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 09/31] target/alpha: Restrict has_work() handler to sysemu Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 10/31] target/arm: Restrict has_work() handler to sysemu and TCG Philippe Mathieu-Daudé
2021-09-20 22:03   ` Richard Henderson
2021-09-20 21:44 ` [PATCH v5 11/31] target/avr: Restrict has_work() handler to sysemu Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 12/31] target/cris: " Philippe Mathieu-Daudé
2021-09-20 21:50   ` Richard Henderson
2021-09-20 21:44 ` [PATCH v5 13/31] target/hexagon: Remove unused has_work() handler Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 14/31] target/hppa: Restrict has_work() handler to sysemu Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 15/31] target/i386: Restrict has_work() handler to sysemu and TCG Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 16/31] target/m68k: Restrict has_work() handler to sysemu Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 17/31] target/microblaze: " Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 18/31] target/mips: Restrict has_work() handler to sysemu and TCG Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 19/31] target/nios2: Restrict has_work() handler to sysemu Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 20/31] target/openrisc: " Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 21/31] target/ppc: Introduce PowerPCCPUClass::has_work() Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 22/31] target/ppc: Restrict has_work() handlers to sysemu and TCG Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 23/31] target/riscv: Restrict has_work() handler " Philippe Mathieu-Daudé
2021-09-24  6:41   ` Alistair Francis
2021-09-20 21:44 ` [PATCH v5 24/31] target/rx: Restrict has_work() handler to sysemu Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 25/31] target/s390x: Restrict has_work() handler to sysemu and TCG Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 26/31] target/sh4: Restrict has_work() handler to sysemu Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 27/31] target/sparc: Remove pointless use of CONFIG_TCG definition Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 28/31] target/sparc: Restrict has_work() handler to sysemu Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 29/31] target/tricore: " Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 30/31] target/xtensa: " Philippe Mathieu-Daudé
2021-09-20 21:44 ` [PATCH v5 31/31] accel: Add missing AccelOpsClass::has_work() and drop SysemuCPUOps one Philippe Mathieu-Daudé

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=20210920214447.2998623-2-f4bug@amsat.org \
    --to=f4bug@amsat.org \
    --cc=mdavidsaver@gmail.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.