[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 05/13] accel/tcg: Make cpu_exec_interrupt hook mandatory
From: |
Philippe Mathieu-Daudé |
Subject: |
[PULL 05/13] accel/tcg: Make cpu_exec_interrupt hook mandatory |
Date: |
Tue, 16 Jul 2024 20:09:32 +0200 |
From: Peter Maydell <peter.maydell@linaro.org>
The TCGCPUOps::cpu_exec_interrupt hook is currently not mandatory; if
it is left NULL then we treat it as if it had returned false. However
since pretty much every architecture needs to handle interrupts,
almost every target we have provides the hook. The one exception is
Tricore, which doesn't currently implement the architectural
interrupt handling.
Add a "do nothing" implementation of cpu_exec_hook for Tricore,
assert on startup that the CPU does provide the hook, and remove
the runtime NULL check before calling it.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20240712113949.4146855-1-peter.maydell@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
accel/tcg/cpu-exec.c | 4 ++--
target/tricore/cpu.c | 6 ++++++
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
index 245fd6327d..9010dad073 100644
--- a/accel/tcg/cpu-exec.c
+++ b/accel/tcg/cpu-exec.c
@@ -857,8 +857,7 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
else {
const TCGCPUOps *tcg_ops = cpu->cc->tcg_ops;
- if (tcg_ops->cpu_exec_interrupt &&
- tcg_ops->cpu_exec_interrupt(cpu, interrupt_request)) {
+ if (tcg_ops->cpu_exec_interrupt(cpu, interrupt_request)) {
if (!tcg_ops->need_replay_interrupt ||
tcg_ops->need_replay_interrupt(interrupt_request)) {
replay_interrupt();
@@ -1080,6 +1079,7 @@ bool tcg_exec_realizefn(CPUState *cpu, Error **errp)
/* Check mandatory TCGCPUOps handlers */
#ifndef CONFIG_USER_ONLY
assert(cpu->cc->tcg_ops->cpu_exec_halt);
+ assert(cpu->cc->tcg_ops->cpu_exec_interrupt);
#endif /* !CONFIG_USER_ONLY */
cpu->cc->tcg_ops->initialize();
tcg_target_initialized = true;
diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c
index 4d9c0368f2..1a26171590 100644
--- a/target/tricore/cpu.c
+++ b/target/tricore/cpu.c
@@ -155,6 +155,11 @@ static void tc37x_initfn(Object *obj)
set_feature(&cpu->env, TRICORE_FEATURE_162);
}
+static bool tricore_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
+{
+ /* Interrupts are not implemented */
+ return false;
+}
#include "hw/core/sysemu-cpu-ops.h"
@@ -169,6 +174,7 @@ static const TCGCPUOps tricore_tcg_ops = {
.synchronize_from_tb = tricore_cpu_synchronize_from_tb,
.restore_state_to_opc = tricore_restore_state_to_opc,
.tlb_fill = tricore_cpu_tlb_fill,
+ .cpu_exec_interrupt = tricore_cpu_exec_interrupt,
.cpu_exec_halt = tricore_cpu_has_work,
};
--
2.41.0
- [PULL 00/13] Misc HW/UI patches for 2024-07-16, Philippe Mathieu-Daudé, 2024/07/16
- [PULL 01/13] hw/core/loader: allow loading larger ROMs, Philippe Mathieu-Daudé, 2024/07/16
- [PULL 02/13] hw/isa/vt82c686: Turn "intr" irq into a named gpio, Philippe Mathieu-Daudé, 2024/07/16
- [PULL 03/13] include/hw/qdev-core.h: Correct and clarify gpio doc comments, Philippe Mathieu-Daudé, 2024/07/16
- [PULL 04/13] loader: remove load_image_gzipped function as its not used anywhere, Philippe Mathieu-Daudé, 2024/07/16
- [PULL 05/13] accel/tcg: Make cpu_exec_interrupt hook mandatory,
Philippe Mathieu-Daudé <=
- [PULL 06/13] system/cpus: Add cpu_pause() function, Philippe Mathieu-Daudé, 2024/07/16
- [PULL 07/13] esp: remove transfer size check from DMA DATA IN and DATA OUT transfers, Philippe Mathieu-Daudé, 2024/07/16
- [PULL 08/13] ui/cocoa: Release CGColorSpace, Philippe Mathieu-Daudé, 2024/07/16
- [PULL 09/13] ui/console: Convert mouse visibility parameter into bool, Philippe Mathieu-Daudé, 2024/07/16
- [PULL 13/13] system/physmem: use return value of ram_block_discard_require() as errno, Philippe Mathieu-Daudé, 2024/07/16
- [PULL 10/13] ui/cocoa: Add cursor composition, Philippe Mathieu-Daudé, 2024/07/16
- [PULL 11/13] ui/console: Remove dpy_cursor_define_supported(), Philippe Mathieu-Daudé, 2024/07/16
- [PULL 12/13] vl: fix "type is NULL" in -vga help, Philippe Mathieu-Daudé, 2024/07/16
- Re: [PULL 00/13] Misc HW/UI patches for 2024-07-16, Richard Henderson, 2024/07/17