accel/tcg: Move cpu_get_tb_cpu_state to TCGCPUOps

Move the global function name to a hook on TCGCPUOps.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2025-04-27 17:22:04 -07:00
parent 4759aae432
commit c37f8978d9
27 changed files with 56 additions and 26 deletions

View file

@ -395,7 +395,7 @@ const void *HELPER(lookup_tb_ptr)(CPUArchState *env)
*/ */
cpu->neg.can_do_io = true; cpu->neg.can_do_io = true;
TCGTBCPUState s = cpu_get_tb_cpu_state(cpu); TCGTBCPUState s = cpu->cc->tcg_ops->get_tb_cpu_state(cpu);
s.cflags = curr_cflags(cpu); s.cflags = curr_cflags(cpu);
if (check_for_breakpoints(cpu, s.pc, &s.cflags)) { if (check_for_breakpoints(cpu, s.pc, &s.cflags)) {
@ -567,7 +567,7 @@ void cpu_exec_step_atomic(CPUState *cpu)
g_assert(!cpu->running); g_assert(!cpu->running);
cpu->running = true; cpu->running = true;
TCGTBCPUState s = cpu_get_tb_cpu_state(cpu); TCGTBCPUState s = cpu->cc->tcg_ops->get_tb_cpu_state(cpu);
s.cflags = curr_cflags(cpu); s.cflags = curr_cflags(cpu);
/* Execute in a serial context. */ /* Execute in a serial context. */
@ -935,7 +935,7 @@ cpu_exec_loop(CPUState *cpu, SyncClocks *sc)
while (!cpu_handle_interrupt(cpu, &last_tb)) { while (!cpu_handle_interrupt(cpu, &last_tb)) {
TranslationBlock *tb; TranslationBlock *tb;
TCGTBCPUState s = cpu_get_tb_cpu_state(cpu); TCGTBCPUState s = cpu->cc->tcg_ops->get_tb_cpu_state(cpu);
s.cflags = cpu->cflags_next_tb; s.cflags = cpu->cflags_next_tb;
/* /*
@ -1052,6 +1052,7 @@ bool tcg_exec_realizefn(CPUState *cpu, Error **errp)
assert(tcg_ops->cpu_exec_reset); assert(tcg_ops->cpu_exec_reset);
#endif /* !CONFIG_USER_ONLY */ #endif /* !CONFIG_USER_ONLY */
assert(tcg_ops->translate_code); assert(tcg_ops->translate_code);
assert(tcg_ops->get_tb_cpu_state);
assert(tcg_ops->mmu_index); assert(tcg_ops->mmu_index);
tcg_ops->initialize(); tcg_ops->initialize();
tcg_target_initialized = true; tcg_target_initialized = true;

View file

@ -590,7 +590,7 @@ void tb_check_watchpoint(CPUState *cpu, uintptr_t retaddr)
/* The exception probably happened in a helper. The CPU state should /* The exception probably happened in a helper. The CPU state should
have been saved before calling it. Fetch the PC from there. */ have been saved before calling it. Fetch the PC from there. */
CPUArchState *env = cpu_env(cpu); CPUArchState *env = cpu_env(cpu);
TCGTBCPUState s = cpu_get_tb_cpu_state(cpu); TCGTBCPUState s = cpu->cc->tcg_ops->get_tb_cpu_state(cpu);
tb_page_addr_t addr = get_page_addr_code(env, s.pc); tb_page_addr_t addr = get_page_addr_code(env, s.pc);
if (addr != -1) { if (addr != -1) {

View file

@ -19,8 +19,6 @@
#include "accel/tcg/tb-cpu-state.h" #include "accel/tcg/tb-cpu-state.h"
#include "tcg/tcg-mo.h" #include "tcg/tcg-mo.h"
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs);
struct TCGCPUOps { struct TCGCPUOps {
/** /**
* mttcg_supported: multi-threaded TCG is supported * mttcg_supported: multi-threaded TCG is supported
@ -63,6 +61,12 @@ struct TCGCPUOps {
*/ */
void (*translate_code)(CPUState *cpu, TranslationBlock *tb, void (*translate_code)(CPUState *cpu, TranslationBlock *tb,
int *max_insns, vaddr pc, void *host_pc); int *max_insns, vaddr pc, void *host_pc);
/**
* @get_tb_cpu_state: Extract CPU state for a TCG #TranslationBlock
*
* Fill in all data required to select or compile a TranslationBlock.
*/
TCGTBCPUState (*get_tb_cpu_state)(CPUState *cs);
/** /**
* @synchronize_from_tb: Synchronize state from a TCG #TranslationBlock * @synchronize_from_tb: Synchronize state from a TCG #TranslationBlock
* *

View file

@ -41,7 +41,7 @@ static vaddr alpha_cpu_get_pc(CPUState *cs)
return env->pc; return env->pc;
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState alpha_get_tb_cpu_state(CPUState *cs)
{ {
CPUAlphaState *env = cpu_env(cs); CPUAlphaState *env = cpu_env(cs);
uint32_t flags = env->flags & ENV_FLAG_TB_MASK; uint32_t flags = env->flags & ENV_FLAG_TB_MASK;
@ -251,6 +251,7 @@ static const TCGCPUOps alpha_tcg_ops = {
.initialize = alpha_translate_init, .initialize = alpha_translate_init,
.translate_code = alpha_translate_code, .translate_code = alpha_translate_code,
.get_tb_cpu_state = alpha_get_tb_cpu_state,
.synchronize_from_tb = alpha_cpu_synchronize_from_tb, .synchronize_from_tb = alpha_cpu_synchronize_from_tb,
.restore_state_to_opc = alpha_restore_state_to_opc, .restore_state_to_opc = alpha_restore_state_to_opc,
.mmu_index = alpha_cpu_mmu_index, .mmu_index = alpha_cpu_mmu_index,

View file

@ -2693,6 +2693,7 @@ static const TCGCPUOps arm_tcg_ops = {
.initialize = arm_translate_init, .initialize = arm_translate_init,
.translate_code = arm_translate_code, .translate_code = arm_translate_code,
.get_tb_cpu_state = arm_get_tb_cpu_state,
.synchronize_from_tb = arm_cpu_synchronize_from_tb, .synchronize_from_tb = arm_cpu_synchronize_from_tb,
.debug_excp_handler = arm_debug_excp_handler, .debug_excp_handler = arm_debug_excp_handler,
.restore_state_to_opc = arm_restore_state_to_opc, .restore_state_to_opc = arm_restore_state_to_opc,

View file

@ -28,6 +28,7 @@
#include "exec/hwaddr.h" #include "exec/hwaddr.h"
#include "exec/vaddr.h" #include "exec/vaddr.h"
#include "exec/breakpoint.h" #include "exec/breakpoint.h"
#include "accel/tcg/tb-cpu-state.h"
#include "hw/registerfields.h" #include "hw/registerfields.h"
#include "tcg/tcg-gvec-desc.h" #include "tcg/tcg-gvec-desc.h"
#include "system/memory.h" #include "system/memory.h"
@ -372,6 +373,7 @@ void arm_restore_state_to_opc(CPUState *cs,
const uint64_t *data); const uint64_t *data);
#ifdef CONFIG_TCG #ifdef CONFIG_TCG
TCGTBCPUState arm_get_tb_cpu_state(CPUState *cs);
void arm_cpu_synchronize_from_tb(CPUState *cs, const TranslationBlock *tb); void arm_cpu_synchronize_from_tb(CPUState *cs, const TranslationBlock *tb);
/* Our implementation of TCGCPUOps::cpu_exec_halt */ /* Our implementation of TCGCPUOps::cpu_exec_halt */

View file

@ -238,6 +238,7 @@ static const TCGCPUOps arm_v7m_tcg_ops = {
.initialize = arm_translate_init, .initialize = arm_translate_init,
.translate_code = arm_translate_code, .translate_code = arm_translate_code,
.get_tb_cpu_state = arm_get_tb_cpu_state,
.synchronize_from_tb = arm_cpu_synchronize_from_tb, .synchronize_from_tb = arm_cpu_synchronize_from_tb,
.debug_excp_handler = arm_debug_excp_handler, .debug_excp_handler = arm_debug_excp_handler,
.restore_state_to_opc = arm_restore_state_to_opc, .restore_state_to_opc = arm_restore_state_to_opc,

View file

@ -545,7 +545,7 @@ static bool mve_no_pred(CPUARMState *env)
return true; return true;
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) TCGTBCPUState arm_get_tb_cpu_state(CPUState *cs)
{ {
CPUARMState *env = cpu_env(cs); CPUARMState *env = cpu_env(cs);
CPUARMTBFlags flags; CPUARMTBFlags flags;

View file

@ -54,7 +54,7 @@ static int avr_cpu_mmu_index(CPUState *cs, bool ifetch)
return ifetch ? MMU_CODE_IDX : MMU_DATA_IDX; return ifetch ? MMU_CODE_IDX : MMU_DATA_IDX;
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState avr_get_tb_cpu_state(CPUState *cs)
{ {
CPUAVRState *env = cpu_env(cs); CPUAVRState *env = cpu_env(cs);
uint32_t flags = 0; uint32_t flags = 0;
@ -241,6 +241,7 @@ static const TCGCPUOps avr_tcg_ops = {
.mttcg_supported = false, .mttcg_supported = false,
.initialize = avr_cpu_tcg_init, .initialize = avr_cpu_tcg_init,
.translate_code = avr_cpu_translate_code, .translate_code = avr_cpu_translate_code,
.get_tb_cpu_state = avr_get_tb_cpu_state,
.synchronize_from_tb = avr_cpu_synchronize_from_tb, .synchronize_from_tb = avr_cpu_synchronize_from_tb,
.restore_state_to_opc = avr_restore_state_to_opc, .restore_state_to_opc = avr_restore_state_to_opc,
.mmu_index = avr_cpu_mmu_index, .mmu_index = avr_cpu_mmu_index,

View file

@ -255,7 +255,7 @@ static vaddr hexagon_cpu_get_pc(CPUState *cs)
return cpu_env(cs)->gpr[HEX_REG_PC]; return cpu_env(cs)->gpr[HEX_REG_PC];
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState hexagon_get_tb_cpu_state(CPUState *cs)
{ {
CPUHexagonState *env = cpu_env(cs); CPUHexagonState *env = cpu_env(cs);
vaddr pc = env->gpr[HEX_REG_PC]; vaddr pc = env->gpr[HEX_REG_PC];
@ -344,6 +344,7 @@ static const TCGCPUOps hexagon_tcg_ops = {
.mttcg_supported = false, .mttcg_supported = false,
.initialize = hexagon_translate_init, .initialize = hexagon_translate_init,
.translate_code = hexagon_translate_code, .translate_code = hexagon_translate_code,
.get_tb_cpu_state = hexagon_get_tb_cpu_state,
.synchronize_from_tb = hexagon_cpu_synchronize_from_tb, .synchronize_from_tb = hexagon_cpu_synchronize_from_tb,
.restore_state_to_opc = hexagon_restore_state_to_opc, .restore_state_to_opc = hexagon_restore_state_to_opc,
.mmu_index = hexagon_cpu_mmu_index, .mmu_index = hexagon_cpu_mmu_index,

View file

@ -51,7 +51,7 @@ static vaddr hppa_cpu_get_pc(CPUState *cs)
env->iaoq_f & -4); env->iaoq_f & -4);
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState hppa_get_tb_cpu_state(CPUState *cs)
{ {
CPUHPPAState *env = cpu_env(cs); CPUHPPAState *env = cpu_env(cs);
uint32_t flags = 0; uint32_t flags = 0;
@ -262,6 +262,7 @@ static const TCGCPUOps hppa_tcg_ops = {
.initialize = hppa_translate_init, .initialize = hppa_translate_init,
.translate_code = hppa_translate_code, .translate_code = hppa_translate_code,
.get_tb_cpu_state = hppa_get_tb_cpu_state,
.synchronize_from_tb = hppa_cpu_synchronize_from_tb, .synchronize_from_tb = hppa_cpu_synchronize_from_tb,
.restore_state_to_opc = hppa_restore_state_to_opc, .restore_state_to_opc = hppa_restore_state_to_opc,
.mmu_index = hppa_cpu_mmu_index, .mmu_index = hppa_cpu_mmu_index,

View file

@ -48,7 +48,7 @@ static void x86_cpu_exec_exit(CPUState *cs)
env->eflags = cpu_compute_eflags(env); env->eflags = cpu_compute_eflags(env);
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState x86_get_tb_cpu_state(CPUState *cs)
{ {
CPUX86State *env = cpu_env(cs); CPUX86State *env = cpu_env(cs);
uint32_t flags, cs_base; uint32_t flags, cs_base;
@ -160,6 +160,7 @@ const TCGCPUOps x86_tcg_ops = {
.guest_default_memory_order = TCG_MO_ALL & ~TCG_MO_ST_LD, .guest_default_memory_order = TCG_MO_ALL & ~TCG_MO_ST_LD,
.initialize = tcg_x86_init, .initialize = tcg_x86_init,
.translate_code = x86_translate_code, .translate_code = x86_translate_code,
.get_tb_cpu_state = x86_get_tb_cpu_state,
.synchronize_from_tb = x86_cpu_synchronize_from_tb, .synchronize_from_tb = x86_cpu_synchronize_from_tb,
.restore_state_to_opc = x86_restore_state_to_opc, .restore_state_to_opc = x86_restore_state_to_opc,
.mmu_index = x86_cpu_mmu_index, .mmu_index = x86_cpu_mmu_index,

View file

@ -336,7 +336,7 @@ static bool loongarch_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
} }
#endif #endif
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState loongarch_get_tb_cpu_state(CPUState *cs)
{ {
CPULoongArchState *env = cpu_env(cs); CPULoongArchState *env = cpu_env(cs);
uint32_t flags; uint32_t flags;
@ -882,6 +882,7 @@ static const TCGCPUOps loongarch_tcg_ops = {
.initialize = loongarch_translate_init, .initialize = loongarch_translate_init,
.translate_code = loongarch_translate_code, .translate_code = loongarch_translate_code,
.get_tb_cpu_state = loongarch_get_tb_cpu_state,
.synchronize_from_tb = loongarch_cpu_synchronize_from_tb, .synchronize_from_tb = loongarch_cpu_synchronize_from_tb,
.restore_state_to_opc = loongarch_restore_state_to_opc, .restore_state_to_opc = loongarch_restore_state_to_opc,
.mmu_index = loongarch_cpu_mmu_index, .mmu_index = loongarch_cpu_mmu_index,

View file

@ -40,7 +40,7 @@ static vaddr m68k_cpu_get_pc(CPUState *cs)
return cpu->env.pc; return cpu->env.pc;
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState m68k_get_tb_cpu_state(CPUState *cs)
{ {
CPUM68KState *env = cpu_env(cs); CPUM68KState *env = cpu_env(cs);
uint32_t flags; uint32_t flags;
@ -613,6 +613,7 @@ static const TCGCPUOps m68k_tcg_ops = {
.initialize = m68k_tcg_init, .initialize = m68k_tcg_init,
.translate_code = m68k_translate_code, .translate_code = m68k_translate_code,
.get_tb_cpu_state = m68k_get_tb_cpu_state,
.restore_state_to_opc = m68k_restore_state_to_opc, .restore_state_to_opc = m68k_restore_state_to_opc,
.mmu_index = m68k_cpu_mmu_index, .mmu_index = m68k_cpu_mmu_index,

View file

@ -95,7 +95,7 @@ static vaddr mb_cpu_get_pc(CPUState *cs)
return cpu->env.pc; return cpu->env.pc;
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState mb_get_tb_cpu_state(CPUState *cs)
{ {
CPUMBState *env = cpu_env(cs); CPUMBState *env = cpu_env(cs);
@ -442,6 +442,7 @@ static const TCGCPUOps mb_tcg_ops = {
.initialize = mb_tcg_init, .initialize = mb_tcg_init,
.translate_code = mb_translate_code, .translate_code = mb_translate_code,
.get_tb_cpu_state = mb_get_tb_cpu_state,
.synchronize_from_tb = mb_cpu_synchronize_from_tb, .synchronize_from_tb = mb_cpu_synchronize_from_tb,
.restore_state_to_opc = mb_restore_state_to_opc, .restore_state_to_opc = mb_restore_state_to_opc,
.mmu_index = mb_cpu_mmu_index, .mmu_index = mb_cpu_mmu_index,

View file

@ -549,7 +549,7 @@ static int mips_cpu_mmu_index(CPUState *cs, bool ifunc)
return mips_env_mmu_index(cpu_env(cs)); return mips_env_mmu_index(cpu_env(cs));
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState mips_get_tb_cpu_state(CPUState *cs)
{ {
CPUMIPSState *env = cpu_env(cs); CPUMIPSState *env = cpu_env(cs);
@ -566,6 +566,7 @@ static const TCGCPUOps mips_tcg_ops = {
.initialize = mips_tcg_init, .initialize = mips_tcg_init,
.translate_code = mips_translate_code, .translate_code = mips_translate_code,
.get_tb_cpu_state = mips_get_tb_cpu_state,
.synchronize_from_tb = mips_cpu_synchronize_from_tb, .synchronize_from_tb = mips_cpu_synchronize_from_tb,
.restore_state_to_opc = mips_restore_state_to_opc, .restore_state_to_opc = mips_restore_state_to_opc,
.mmu_index = mips_cpu_mmu_index, .mmu_index = mips_cpu_mmu_index,

View file

@ -41,7 +41,7 @@ static vaddr openrisc_cpu_get_pc(CPUState *cs)
return cpu->env.pc; return cpu->env.pc;
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState openrisc_get_tb_cpu_state(CPUState *cs)
{ {
CPUOpenRISCState *env = cpu_env(cs); CPUOpenRISCState *env = cpu_env(cs);
@ -258,6 +258,7 @@ static const TCGCPUOps openrisc_tcg_ops = {
.initialize = openrisc_translate_init, .initialize = openrisc_translate_init,
.translate_code = openrisc_translate_code, .translate_code = openrisc_translate_code,
.get_tb_cpu_state = openrisc_get_tb_cpu_state,
.synchronize_from_tb = openrisc_cpu_synchronize_from_tb, .synchronize_from_tb = openrisc_cpu_synchronize_from_tb,
.restore_state_to_opc = openrisc_restore_state_to_opc, .restore_state_to_opc = openrisc_restore_state_to_opc,
.mmu_index = openrisc_cpu_mmu_index, .mmu_index = openrisc_cpu_mmu_index,

View file

@ -45,7 +45,6 @@
#include "internal.h" #include "internal.h"
#include "spr_common.h" #include "spr_common.h"
#include "power8-pmu.h" #include "power8-pmu.h"
#ifndef CONFIG_USER_ONLY #ifndef CONFIG_USER_ONLY
#include "hw/boards.h" #include "hw/boards.h"
#include "hw/intc/intc.h" #include "hw/intc/intc.h"
@ -7483,6 +7482,7 @@ static const TCGCPUOps ppc_tcg_ops = {
.guest_default_memory_order = 0, .guest_default_memory_order = 0,
.initialize = ppc_translate_init, .initialize = ppc_translate_init,
.translate_code = ppc_translate_code, .translate_code = ppc_translate_code,
.get_tb_cpu_state = ppc_get_tb_cpu_state,
.restore_state_to_opc = ppc_restore_state_to_opc, .restore_state_to_opc = ppc_restore_state_to_opc,
.mmu_index = ppc_cpu_mmu_index, .mmu_index = ppc_cpu_mmu_index,

View file

@ -28,6 +28,7 @@
#include "cpu-models.h" #include "cpu-models.h"
#include "spr_common.h" #include "spr_common.h"
#include "accel/tcg/cpu-ops.h" #include "accel/tcg/cpu-ops.h"
#include "internal.h"
/* Swap temporary saved registers with GPRs */ /* Swap temporary saved registers with GPRs */
void hreg_swap_gpr_tgpr(CPUPPCState *env) void hreg_swap_gpr_tgpr(CPUPPCState *env)
@ -256,7 +257,7 @@ void hreg_update_pmu_hflags(CPUPPCState *env)
env->hflags |= hreg_compute_pmu_hflags_value(env); env->hflags |= hreg_compute_pmu_hflags_value(env);
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) TCGTBCPUState ppc_get_tb_cpu_state(CPUState *cs)
{ {
CPUPPCState *env = cpu_env(cs); CPUPPCState *env = cpu_env(cs);
uint32_t hflags_current = env->hflags; uint32_t hflags_current = env->hflags;

View file

@ -21,6 +21,7 @@
#include "exec/breakpoint.h" #include "exec/breakpoint.h"
#include "hw/registerfields.h" #include "hw/registerfields.h"
#include "exec/page-protection.h" #include "exec/page-protection.h"
#include "accel/tcg/tb-cpu-state.h"
/* PM instructions */ /* PM instructions */
typedef enum { typedef enum {
@ -308,4 +309,6 @@ static inline int ger_pack_masks(int pmsk, int ymsk, int xmsk)
return msk; return msk;
} }
TCGTBCPUState ppc_get_tb_cpu_state(CPUState *cs);
#endif /* PPC_INTERNAL_H */ #endif /* PPC_INTERNAL_H */

View file

@ -98,7 +98,7 @@ static int riscv_cpu_mmu_index(CPUState *cs, bool ifetch)
return riscv_env_mmu_index(cpu_env(cs), ifetch); return riscv_env_mmu_index(cpu_env(cs), ifetch);
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState riscv_get_tb_cpu_state(CPUState *cs)
{ {
CPURISCVState *env = cpu_env(cs); CPURISCVState *env = cpu_env(cs);
RISCVCPU *cpu = env_archcpu(env); RISCVCPU *cpu = env_archcpu(env);
@ -243,6 +243,7 @@ const TCGCPUOps riscv_tcg_ops = {
.initialize = riscv_translate_init, .initialize = riscv_translate_init,
.translate_code = riscv_translate_code, .translate_code = riscv_translate_code,
.get_tb_cpu_state = riscv_get_tb_cpu_state,
.synchronize_from_tb = riscv_cpu_synchronize_from_tb, .synchronize_from_tb = riscv_cpu_synchronize_from_tb,
.restore_state_to_opc = riscv_restore_state_to_opc, .restore_state_to_opc = riscv_restore_state_to_opc,
.mmu_index = riscv_cpu_mmu_index, .mmu_index = riscv_cpu_mmu_index,

View file

@ -44,7 +44,7 @@ static vaddr rx_cpu_get_pc(CPUState *cs)
return cpu->env.pc; return cpu->env.pc;
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState rx_get_tb_cpu_state(CPUState *cs)
{ {
CPURXState *env = cpu_env(cs); CPURXState *env = cpu_env(cs);
uint32_t flags = 0; uint32_t flags = 0;
@ -220,6 +220,7 @@ static const TCGCPUOps rx_tcg_ops = {
.initialize = rx_translate_init, .initialize = rx_translate_init,
.translate_code = rx_translate_code, .translate_code = rx_translate_code,
.get_tb_cpu_state = rx_get_tb_cpu_state,
.synchronize_from_tb = rx_cpu_synchronize_from_tb, .synchronize_from_tb = rx_cpu_synchronize_from_tb,
.restore_state_to_opc = rx_restore_state_to_opc, .restore_state_to_opc = rx_restore_state_to_opc,
.mmu_index = rx_cpu_mmu_index, .mmu_index = rx_cpu_mmu_index,

View file

@ -309,7 +309,7 @@ static int s390x_cpu_mmu_index(CPUState *cs, bool ifetch)
return s390x_env_mmu_index(cpu_env(cs), ifetch); return s390x_env_mmu_index(cpu_env(cs), ifetch);
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState s390x_get_tb_cpu_state(CPUState *cs)
{ {
CPUS390XState *env = cpu_env(cs); CPUS390XState *env = cpu_env(cs);
uint32_t flags; uint32_t flags;
@ -358,6 +358,7 @@ static const TCGCPUOps s390_tcg_ops = {
.initialize = s390x_translate_init, .initialize = s390x_translate_init,
.translate_code = s390x_translate_code, .translate_code = s390x_translate_code,
.get_tb_cpu_state = s390x_get_tb_cpu_state,
.restore_state_to_opc = s390x_restore_state_to_opc, .restore_state_to_opc = s390x_restore_state_to_opc,
.mmu_index = s390x_cpu_mmu_index, .mmu_index = s390x_cpu_mmu_index,

View file

@ -43,7 +43,7 @@ static vaddr superh_cpu_get_pc(CPUState *cs)
return cpu->env.pc; return cpu->env.pc;
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState superh_get_tb_cpu_state(CPUState *cs)
{ {
CPUSH4State *env = cpu_env(cs); CPUSH4State *env = cpu_env(cs);
uint32_t flags; uint32_t flags;
@ -289,6 +289,7 @@ static const TCGCPUOps superh_tcg_ops = {
.initialize = sh4_translate_init, .initialize = sh4_translate_init,
.translate_code = sh4_translate_code, .translate_code = sh4_translate_code,
.get_tb_cpu_state = superh_get_tb_cpu_state,
.synchronize_from_tb = superh_cpu_synchronize_from_tb, .synchronize_from_tb = superh_cpu_synchronize_from_tb,
.restore_state_to_opc = superh_restore_state_to_opc, .restore_state_to_opc = superh_restore_state_to_opc,
.mmu_index = sh4_cpu_mmu_index, .mmu_index = sh4_cpu_mmu_index,

View file

@ -716,7 +716,7 @@ static void sparc_cpu_synchronize_from_tb(CPUState *cs,
cpu->env.npc = tb->cs_base; cpu->env.npc = tb->cs_base;
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState sparc_get_tb_cpu_state(CPUState *cs)
{ {
CPUSPARCState *env = cpu_env(cs); CPUSPARCState *env = cpu_env(cs);
uint32_t flags = cpu_mmu_index(cs, false); uint32_t flags = cpu_mmu_index(cs, false);
@ -1029,6 +1029,7 @@ static const TCGCPUOps sparc_tcg_ops = {
.initialize = sparc_tcg_init, .initialize = sparc_tcg_init,
.translate_code = sparc_translate_code, .translate_code = sparc_translate_code,
.get_tb_cpu_state = sparc_get_tb_cpu_state,
.synchronize_from_tb = sparc_cpu_synchronize_from_tb, .synchronize_from_tb = sparc_cpu_synchronize_from_tb,
.restore_state_to_opc = sparc_restore_state_to_opc, .restore_state_to_opc = sparc_restore_state_to_opc,
.mmu_index = sparc_cpu_mmu_index, .mmu_index = sparc_cpu_mmu_index,

View file

@ -45,7 +45,7 @@ static vaddr tricore_cpu_get_pc(CPUState *cs)
return cpu_env(cs)->PC; return cpu_env(cs)->PC;
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState tricore_get_tb_cpu_state(CPUState *cs)
{ {
CPUTriCoreState *env = cpu_env(cs); CPUTriCoreState *env = cpu_env(cs);
@ -185,6 +185,7 @@ static const TCGCPUOps tricore_tcg_ops = {
.mttcg_supported = false, .mttcg_supported = false,
.initialize = tricore_tcg_init, .initialize = tricore_tcg_init,
.translate_code = tricore_translate_code, .translate_code = tricore_translate_code,
.get_tb_cpu_state = tricore_get_tb_cpu_state,
.synchronize_from_tb = tricore_cpu_synchronize_from_tb, .synchronize_from_tb = tricore_cpu_synchronize_from_tb,
.restore_state_to_opc = tricore_restore_state_to_opc, .restore_state_to_opc = tricore_restore_state_to_opc,
.mmu_index = tricore_cpu_mmu_index, .mmu_index = tricore_cpu_mmu_index,

View file

@ -55,7 +55,7 @@ static vaddr xtensa_cpu_get_pc(CPUState *cs)
return cpu->env.pc; return cpu->env.pc;
} }
TCGTBCPUState cpu_get_tb_cpu_state(CPUState *cs) static TCGTBCPUState xtensa_get_tb_cpu_state(CPUState *cs)
{ {
CPUXtensaState *env = cpu_env(cs); CPUXtensaState *env = cpu_env(cs);
uint32_t flags = 0; uint32_t flags = 0;
@ -312,6 +312,7 @@ static const TCGCPUOps xtensa_tcg_ops = {
.initialize = xtensa_translate_init, .initialize = xtensa_translate_init,
.translate_code = xtensa_translate_code, .translate_code = xtensa_translate_code,
.debug_excp_handler = xtensa_breakpoint_handler, .debug_excp_handler = xtensa_breakpoint_handler,
.get_tb_cpu_state = xtensa_get_tb_cpu_state,
.restore_state_to_opc = xtensa_restore_state_to_opc, .restore_state_to_opc = xtensa_restore_state_to_opc,
.mmu_index = xtensa_cpu_mmu_index, .mmu_index = xtensa_cpu_mmu_index,