[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 16/24] accel/tcg: Move @jmp_env from CPUState to TCG AccelCPUStat
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH 16/24] accel/tcg: Move @jmp_env from CPUState to TCG AccelCPUState |
Date: |
Mon, 29 Apr 2024 00:14:42 +0200 |
@jmp_env is specific to TCG accelerator, move it to its AccelCPUState.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
accel/tcg/internal-common.h | 1 +
accel/tcg/tcg-accel-ops.h | 1 +
accel/tcg/vcpu-state.h | 2 ++
include/hw/core/cpu.h | 1 -
accel/tcg/cpu-exec-common.c | 2 +-
accel/tcg/cpu-exec.c | 6 +++---
6 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/accel/tcg/internal-common.h b/accel/tcg/internal-common.h
index df317e7496..e2c80bc7ff 100644
--- a/accel/tcg/internal-common.h
+++ b/accel/tcg/internal-common.h
@@ -11,6 +11,7 @@
#include "exec/cpu-common.h"
#include "exec/translation-block.h"
+#include "accel/tcg/vcpu-state.h"
extern int64_t max_delay;
extern int64_t max_advance;
diff --git a/accel/tcg/tcg-accel-ops.h b/accel/tcg/tcg-accel-ops.h
index 44c4079972..ed41a087a3 100644
--- a/accel/tcg/tcg-accel-ops.h
+++ b/accel/tcg/tcg-accel-ops.h
@@ -13,6 +13,7 @@
#define TCG_ACCEL_OPS_H
#include "sysemu/cpus.h"
+#include "accel/tcg/vcpu-state.h"
void tcg_cpu_destroy(CPUState *cpu);
int tcg_cpu_exec(CPUState *cpu);
diff --git a/accel/tcg/vcpu-state.h b/accel/tcg/vcpu-state.h
index cf8e3acef9..cb06f0412b 100644
--- a/accel/tcg/vcpu-state.h
+++ b/accel/tcg/vcpu-state.h
@@ -12,6 +12,8 @@
* AccelCPUState:
*/
struct AccelCPUState {
+ sigjmp_buf jmp_env;
+
#ifdef CONFIG_USER_ONLY
TaskState *ts;
#endif
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
index dc28920bcc..6d3716f619 100644
--- a/include/hw/core/cpu.h
+++ b/include/hw/core/cpu.h
@@ -477,7 +477,6 @@ struct CPUState {
int64_t icount_budget;
int64_t icount_extra;
uint64_t random_seed;
- sigjmp_buf jmp_env;
QemuMutex work_mutex;
QSIMPLEQ_HEAD(, qemu_work_item) work_list;
diff --git a/accel/tcg/cpu-exec-common.c b/accel/tcg/cpu-exec-common.c
index bc9b1a260e..ec45482305 100644
--- a/accel/tcg/cpu-exec-common.c
+++ b/accel/tcg/cpu-exec-common.c
@@ -38,7 +38,7 @@ void cpu_loop_exit(CPUState *cpu)
cpu->neg.can_do_io = true;
/* Undo any setting in generated code. */
qemu_plugin_disable_mem_helpers(cpu);
- siglongjmp(cpu->jmp_env, 1);
+ siglongjmp(cpu->accel->jmp_env, 1);
}
void cpu_loop_exit_restore(CPUState *cpu, uintptr_t pc)
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
index 9af66bc191..46ad16f911 100644
--- a/accel/tcg/cpu-exec.c
+++ b/accel/tcg/cpu-exec.c
@@ -553,7 +553,7 @@ static void cpu_exec_longjmp_cleanup(CPUState *cpu)
* support such a thing. We'd have to properly register unwind info
* for the JIT for EH, rather that just for GDB.
*
- * Alternative 2: Set and restore cpu->jmp_env in tb_gen_code to
+ * Alternative 2: Set and restore cpu->accel->jmp_env in tb_gen_code to
* capture the cpu_loop_exit longjmp, perform the cleanup, and
* jump again to arrive here.
*/
@@ -577,7 +577,7 @@ void cpu_exec_step_atomic(CPUState *cpu)
uint32_t flags, cflags;
int tb_exit;
- if (sigsetjmp(cpu->jmp_env, 0) == 0) {
+ if (sigsetjmp(cpu->accel->jmp_env, 0) == 0) {
start_exclusive();
g_assert(cpu == current_cpu);
g_assert(!cpu->running);
@@ -1038,7 +1038,7 @@ cpu_exec_loop(CPUState *cpu, SyncClocks *sc)
static int cpu_exec_setjmp(CPUState *cpu, SyncClocks *sc)
{
/* Prepare setjmp context for exception handling. */
- if (unlikely(sigsetjmp(cpu->jmp_env, 0) != 0)) {
+ if (unlikely(sigsetjmp(cpu->accel->jmp_env, 0) != 0)) {
cpu_exec_longjmp_cleanup(cpu);
}
--
2.41.0
- [PATCH 12/24] accel/tcg: Move TaskState from CPUState to TCG AccelCPUState, (continued)
- [PATCH 12/24] accel/tcg: Move TaskState from CPUState to TCG AccelCPUState, Philippe Mathieu-Daudé, 2024/04/28
- [PATCH 13/24] accel/tcg: Update CPUNegativeOffsetState::can_do_io field documentation, Philippe Mathieu-Daudé, 2024/04/28
- [PATCH 14/24] accel/tcg: Move plugin fields to CPUNegativeOffsetState, Philippe Mathieu-Daudé, 2024/04/28
- [PATCH 15/24] accel/tcg: Restrict IcountDecr and CPUTLB to TCG, Philippe Mathieu-Daudé, 2024/04/28
- [PATCH 16/24] accel/tcg: Move @jmp_env from CPUState to TCG AccelCPUState,
Philippe Mathieu-Daudé <=
- [PATCH 17/24] accel/tcg: Move @mem_io_pc from CPUState to TCG AccelCPUState, Philippe Mathieu-Daudé, 2024/04/28
- [PATCH 18/24] accel/tcg: Move @cflags_next_tb from CPUState to TCG AccelCPUState, Philippe Mathieu-Daudé, 2024/04/28
- [PATCH 20/24] accel/tcg: Move @tb_jmp_cache from CPUState to TCG AccelCPUState, Philippe Mathieu-Daudé, 2024/04/28
- [PATCH 21/24] accel/tcg: Remove NULL check in tcg_flush_jmp_cache(), Philippe Mathieu-Daudé, 2024/04/28
- [PATCH 19/24] accel/tcg: Move @iommu_notifiers from CPUState to TCG AccelCPUState, Philippe Mathieu-Daudé, 2024/04/28