cpu: move cc->do_interrupt to tcg_ops

Signed-off-by: Claudio Fontana <cfontana@suse.de>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20210204163931.7358-10-cfontana@suse.de>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Claudio Fontana 2021-02-04 17:39:17 +01:00 committed by Richard Henderson
parent 853bfef4e6
commit 0545608056
27 changed files with 41 additions and 42 deletions

View file

@ -547,7 +547,7 @@ static inline bool cpu_handle_exception(CPUState *cpu, int *ret)
loop */ loop */
#if defined(TARGET_I386) #if defined(TARGET_I386)
CPUClass *cc = CPU_GET_CLASS(cpu); CPUClass *cc = CPU_GET_CLASS(cpu);
cc->do_interrupt(cpu); cc->tcg_ops.do_interrupt(cpu);
#endif #endif
*ret = cpu->exception_index; *ret = cpu->exception_index;
cpu->exception_index = -1; cpu->exception_index = -1;
@ -556,7 +556,7 @@ static inline bool cpu_handle_exception(CPUState *cpu, int *ret)
if (replay_exception()) { if (replay_exception()) {
CPUClass *cc = CPU_GET_CLASS(cpu); CPUClass *cc = CPU_GET_CLASS(cpu);
qemu_mutex_lock_iothread(); qemu_mutex_lock_iothread();
cc->do_interrupt(cpu); cc->tcg_ops.do_interrupt(cpu);
qemu_mutex_unlock_iothread(); qemu_mutex_unlock_iothread();
cpu->exception_index = -1; cpu->exception_index = -1;

View file

@ -105,6 +105,8 @@ typedef struct TcgCpuOperations {
void (*cpu_exec_exit)(CPUState *cpu); void (*cpu_exec_exit)(CPUState *cpu);
/** @cpu_exec_interrupt: Callback for processing interrupts in cpu_exec */ /** @cpu_exec_interrupt: Callback for processing interrupts in cpu_exec */
bool (*cpu_exec_interrupt)(CPUState *cpu, int interrupt_request); bool (*cpu_exec_interrupt)(CPUState *cpu, int interrupt_request);
/** @do_interrupt: Callback for interrupt handling. */
void (*do_interrupt)(CPUState *cpu);
/** /**
* @tlb_fill: Handle a softmmu tlb miss or user-only address fault * @tlb_fill: Handle a softmmu tlb miss or user-only address fault
* *
@ -129,7 +131,6 @@ typedef struct TcgCpuOperations {
* @parse_features: Callback to parse command line arguments. * @parse_features: Callback to parse command line arguments.
* @reset_dump_flags: #CPUDumpFlags to use for reset logging. * @reset_dump_flags: #CPUDumpFlags to use for reset logging.
* @has_work: Callback for checking if there is work to do. * @has_work: Callback for checking if there is work to do.
* @do_interrupt: Callback for interrupt handling.
* @do_unaligned_access: Callback for unaligned access handling, if * @do_unaligned_access: Callback for unaligned access handling, if
* the target defines #TARGET_ALIGNED_ONLY. * the target defines #TARGET_ALIGNED_ONLY.
* @do_transaction_failed: Callback for handling failed memory transactions * @do_transaction_failed: Callback for handling failed memory transactions
@ -199,7 +200,6 @@ struct CPUClass {
int reset_dump_flags; int reset_dump_flags;
bool (*has_work)(CPUState *cpu); bool (*has_work)(CPUState *cpu);
void (*do_interrupt)(CPUState *cpu);
void (*do_unaligned_access)(CPUState *cpu, vaddr addr, void (*do_unaligned_access)(CPUState *cpu, vaddr addr,
MMUAccessType access_type, MMUAccessType access_type,
int mmu_idx, uintptr_t retaddr); int mmu_idx, uintptr_t retaddr);

View file

@ -217,7 +217,7 @@ static void alpha_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = alpha_cpu_class_by_name; cc->class_by_name = alpha_cpu_class_by_name;
cc->has_work = alpha_cpu_has_work; cc->has_work = alpha_cpu_has_work;
cc->do_interrupt = alpha_cpu_do_interrupt; cc->tcg_ops.do_interrupt = alpha_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = alpha_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = alpha_cpu_exec_interrupt;
cc->dump_state = alpha_cpu_dump_state; cc->dump_state = alpha_cpu_dump_state;
cc->set_pc = alpha_cpu_set_pc; cc->set_pc = alpha_cpu_set_pc;

View file

@ -590,7 +590,7 @@ bool arm_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
found: found:
cs->exception_index = excp_idx; cs->exception_index = excp_idx;
env->exception.target_el = target_el; env->exception.target_el = target_el;
cc->do_interrupt(cs); cc->tcg_ops.do_interrupt(cs);
return true; return true;
} }
@ -2261,7 +2261,6 @@ static void arm_cpu_class_init(ObjectClass *oc, void *data)
cc->gdb_read_register = arm_cpu_gdb_read_register; cc->gdb_read_register = arm_cpu_gdb_read_register;
cc->gdb_write_register = arm_cpu_gdb_write_register; cc->gdb_write_register = arm_cpu_gdb_write_register;
#ifndef CONFIG_USER_ONLY #ifndef CONFIG_USER_ONLY
cc->do_interrupt = arm_cpu_do_interrupt;
cc->get_phys_page_attrs_debug = arm_cpu_get_phys_page_attrs_debug; cc->get_phys_page_attrs_debug = arm_cpu_get_phys_page_attrs_debug;
cc->asidx_from_attrs = arm_asidx_from_attrs; cc->asidx_from_attrs = arm_asidx_from_attrs;
cc->vmsd = &vmstate_arm_cpu; cc->vmsd = &vmstate_arm_cpu;
@ -2286,6 +2285,7 @@ static void arm_cpu_class_init(ObjectClass *oc, void *data)
#if !defined(CONFIG_USER_ONLY) #if !defined(CONFIG_USER_ONLY)
cc->do_transaction_failed = arm_cpu_do_transaction_failed; cc->do_transaction_failed = arm_cpu_do_transaction_failed;
cc->adjust_watchpoint_address = arm_adjust_watchpoint_address; cc->adjust_watchpoint_address = arm_adjust_watchpoint_address;
cc->tcg_ops.do_interrupt = arm_cpu_do_interrupt;
#endif /* CONFIG_TCG && !CONFIG_USER_ONLY */ #endif /* CONFIG_TCG && !CONFIG_USER_ONLY */
#endif #endif
} }

View file

@ -34,7 +34,7 @@ static bool arm_v7m_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
if (interrupt_request & CPU_INTERRUPT_HARD if (interrupt_request & CPU_INTERRUPT_HARD
&& (armv7m_nvic_can_take_pending_exception(env->nvic))) { && (armv7m_nvic_can_take_pending_exception(env->nvic))) {
cs->exception_index = EXCP_IRQ; cs->exception_index = EXCP_IRQ;
cc->do_interrupt(cs); cc->tcg_ops.do_interrupt(cs);
ret = true; ret = true;
} }
return ret; return ret;
@ -666,12 +666,11 @@ static void arm_v7m_class_init(ObjectClass *oc, void *data)
CPUClass *cc = CPU_CLASS(oc); CPUClass *cc = CPU_CLASS(oc);
acc->info = data; acc->info = data;
#ifndef CONFIG_USER_ONLY
cc->do_interrupt = arm_v7m_cpu_do_interrupt;
#endif
#ifdef CONFIG_TCG #ifdef CONFIG_TCG
cc->tcg_ops.cpu_exec_interrupt = arm_v7m_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = arm_v7m_cpu_exec_interrupt;
#ifndef CONFIG_USER_ONLY
cc->tcg_ops.do_interrupt = arm_v7m_cpu_do_interrupt;
#endif
#endif /* CONFIG_TCG */ #endif /* CONFIG_TCG */
cc->gdb_core_xml_file = "arm-m-profile.xml"; cc->gdb_core_xml_file = "arm-m-profile.xml";

View file

@ -198,7 +198,7 @@ static void avr_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = avr_cpu_class_by_name; cc->class_by_name = avr_cpu_class_by_name;
cc->has_work = avr_cpu_has_work; cc->has_work = avr_cpu_has_work;
cc->do_interrupt = avr_cpu_do_interrupt; cc->tcg_ops.do_interrupt = avr_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = avr_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = avr_cpu_exec_interrupt;
cc->dump_state = avr_cpu_dump_state; cc->dump_state = avr_cpu_dump_state;
cc->set_pc = avr_cpu_set_pc; cc->set_pc = avr_cpu_set_pc;

View file

@ -34,7 +34,7 @@ bool avr_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
if (interrupt_request & CPU_INTERRUPT_RESET) { if (interrupt_request & CPU_INTERRUPT_RESET) {
if (cpu_interrupts_enabled(env)) { if (cpu_interrupts_enabled(env)) {
cs->exception_index = EXCP_RESET; cs->exception_index = EXCP_RESET;
cc->do_interrupt(cs); cc->tcg_ops.do_interrupt(cs);
cs->interrupt_request &= ~CPU_INTERRUPT_RESET; cs->interrupt_request &= ~CPU_INTERRUPT_RESET;
@ -45,7 +45,7 @@ bool avr_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
if (cpu_interrupts_enabled(env) && env->intsrc != 0) { if (cpu_interrupts_enabled(env) && env->intsrc != 0) {
int index = ctz32(env->intsrc); int index = ctz32(env->intsrc);
cs->exception_index = EXCP_INT(index); cs->exception_index = EXCP_INT(index);
cc->do_interrupt(cs); cc->tcg_ops.do_interrupt(cs);
env->intsrc &= env->intsrc - 1; /* clear the interrupt */ env->intsrc &= env->intsrc - 1; /* clear the interrupt */
cs->interrupt_request &= ~CPU_INTERRUPT_HARD; cs->interrupt_request &= ~CPU_INTERRUPT_HARD;

View file

@ -199,7 +199,7 @@ static void crisv8_cpu_class_init(ObjectClass *oc, void *data)
CRISCPUClass *ccc = CRIS_CPU_CLASS(oc); CRISCPUClass *ccc = CRIS_CPU_CLASS(oc);
ccc->vr = 8; ccc->vr = 8;
cc->do_interrupt = crisv10_cpu_do_interrupt; cc->tcg_ops.do_interrupt = crisv10_cpu_do_interrupt;
cc->gdb_read_register = crisv10_cpu_gdb_read_register; cc->gdb_read_register = crisv10_cpu_gdb_read_register;
cc->tcg_ops.initialize = cris_initialize_crisv10_tcg; cc->tcg_ops.initialize = cris_initialize_crisv10_tcg;
} }
@ -210,7 +210,7 @@ static void crisv9_cpu_class_init(ObjectClass *oc, void *data)
CRISCPUClass *ccc = CRIS_CPU_CLASS(oc); CRISCPUClass *ccc = CRIS_CPU_CLASS(oc);
ccc->vr = 9; ccc->vr = 9;
cc->do_interrupt = crisv10_cpu_do_interrupt; cc->tcg_ops.do_interrupt = crisv10_cpu_do_interrupt;
cc->gdb_read_register = crisv10_cpu_gdb_read_register; cc->gdb_read_register = crisv10_cpu_gdb_read_register;
cc->tcg_ops.initialize = cris_initialize_crisv10_tcg; cc->tcg_ops.initialize = cris_initialize_crisv10_tcg;
} }
@ -221,7 +221,7 @@ static void crisv10_cpu_class_init(ObjectClass *oc, void *data)
CRISCPUClass *ccc = CRIS_CPU_CLASS(oc); CRISCPUClass *ccc = CRIS_CPU_CLASS(oc);
ccc->vr = 10; ccc->vr = 10;
cc->do_interrupt = crisv10_cpu_do_interrupt; cc->tcg_ops.do_interrupt = crisv10_cpu_do_interrupt;
cc->gdb_read_register = crisv10_cpu_gdb_read_register; cc->gdb_read_register = crisv10_cpu_gdb_read_register;
cc->tcg_ops.initialize = cris_initialize_crisv10_tcg; cc->tcg_ops.initialize = cris_initialize_crisv10_tcg;
} }
@ -232,7 +232,7 @@ static void crisv11_cpu_class_init(ObjectClass *oc, void *data)
CRISCPUClass *ccc = CRIS_CPU_CLASS(oc); CRISCPUClass *ccc = CRIS_CPU_CLASS(oc);
ccc->vr = 11; ccc->vr = 11;
cc->do_interrupt = crisv10_cpu_do_interrupt; cc->tcg_ops.do_interrupt = crisv10_cpu_do_interrupt;
cc->gdb_read_register = crisv10_cpu_gdb_read_register; cc->gdb_read_register = crisv10_cpu_gdb_read_register;
cc->tcg_ops.initialize = cris_initialize_crisv10_tcg; cc->tcg_ops.initialize = cris_initialize_crisv10_tcg;
} }
@ -243,7 +243,7 @@ static void crisv17_cpu_class_init(ObjectClass *oc, void *data)
CRISCPUClass *ccc = CRIS_CPU_CLASS(oc); CRISCPUClass *ccc = CRIS_CPU_CLASS(oc);
ccc->vr = 17; ccc->vr = 17;
cc->do_interrupt = crisv10_cpu_do_interrupt; cc->tcg_ops.do_interrupt = crisv10_cpu_do_interrupt;
cc->gdb_read_register = crisv10_cpu_gdb_read_register; cc->gdb_read_register = crisv10_cpu_gdb_read_register;
cc->tcg_ops.initialize = cris_initialize_crisv10_tcg; cc->tcg_ops.initialize = cris_initialize_crisv10_tcg;
} }
@ -268,7 +268,7 @@ static void cris_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = cris_cpu_class_by_name; cc->class_by_name = cris_cpu_class_by_name;
cc->has_work = cris_cpu_has_work; cc->has_work = cris_cpu_has_work;
cc->do_interrupt = cris_cpu_do_interrupt; cc->tcg_ops.do_interrupt = cris_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = cris_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = cris_cpu_exec_interrupt;
cc->dump_state = cris_cpu_dump_state; cc->dump_state = cris_cpu_dump_state;
cc->set_pc = cris_cpu_set_pc; cc->set_pc = cris_cpu_set_pc;

View file

@ -299,7 +299,7 @@ bool cris_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
&& (env->pregs[PR_CCS] & I_FLAG) && (env->pregs[PR_CCS] & I_FLAG)
&& !env->locked_irq) { && !env->locked_irq) {
cs->exception_index = EXCP_IRQ; cs->exception_index = EXCP_IRQ;
cc->do_interrupt(cs); cc->tcg_ops.do_interrupt(cs);
ret = true; ret = true;
} }
if (interrupt_request & CPU_INTERRUPT_NMI) { if (interrupt_request & CPU_INTERRUPT_NMI) {
@ -311,7 +311,7 @@ bool cris_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
} }
if ((env->pregs[PR_CCS] & m_flag_archval)) { if ((env->pregs[PR_CCS] & m_flag_archval)) {
cs->exception_index = EXCP_NMI; cs->exception_index = EXCP_NMI;
cc->do_interrupt(cs); cc->tcg_ops.do_interrupt(cs);
ret = true; ret = true;
} }
} }

View file

@ -140,7 +140,7 @@ static void hppa_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = hppa_cpu_class_by_name; cc->class_by_name = hppa_cpu_class_by_name;
cc->has_work = hppa_cpu_has_work; cc->has_work = hppa_cpu_has_work;
cc->do_interrupt = hppa_cpu_do_interrupt; cc->tcg_ops.do_interrupt = hppa_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = hppa_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = hppa_cpu_exec_interrupt;
cc->dump_state = hppa_cpu_dump_state; cc->dump_state = hppa_cpu_dump_state;
cc->set_pc = hppa_cpu_set_pc; cc->set_pc = hppa_cpu_set_pc;

View file

@ -59,7 +59,7 @@ static void x86_cpu_synchronize_from_tb(CPUState *cs,
void tcg_cpu_common_class_init(CPUClass *cc) void tcg_cpu_common_class_init(CPUClass *cc)
{ {
cc->do_interrupt = x86_cpu_do_interrupt; cc->tcg_ops.do_interrupt = x86_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = x86_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = x86_cpu_exec_interrupt;
cc->tcg_ops.synchronize_from_tb = x86_cpu_synchronize_from_tb; cc->tcg_ops.synchronize_from_tb = x86_cpu_synchronize_from_tb;
cc->tcg_ops.cpu_exec_enter = x86_cpu_exec_enter; cc->tcg_ops.cpu_exec_enter = x86_cpu_exec_enter;

View file

@ -222,7 +222,7 @@ static void lm32_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = lm32_cpu_class_by_name; cc->class_by_name = lm32_cpu_class_by_name;
cc->has_work = lm32_cpu_has_work; cc->has_work = lm32_cpu_has_work;
cc->do_interrupt = lm32_cpu_do_interrupt; cc->tcg_ops.do_interrupt = lm32_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = lm32_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = lm32_cpu_exec_interrupt;
cc->dump_state = lm32_cpu_dump_state; cc->dump_state = lm32_cpu_dump_state;
cc->set_pc = lm32_cpu_set_pc; cc->set_pc = lm32_cpu_set_pc;

View file

@ -465,7 +465,7 @@ static void m68k_cpu_class_init(ObjectClass *c, void *data)
cc->class_by_name = m68k_cpu_class_by_name; cc->class_by_name = m68k_cpu_class_by_name;
cc->has_work = m68k_cpu_has_work; cc->has_work = m68k_cpu_has_work;
cc->do_interrupt = m68k_cpu_do_interrupt; cc->tcg_ops.do_interrupt = m68k_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = m68k_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = m68k_cpu_exec_interrupt;
cc->dump_state = m68k_cpu_dump_state; cc->dump_state = m68k_cpu_dump_state;
cc->set_pc = m68k_cpu_set_pc; cc->set_pc = m68k_cpu_set_pc;

View file

@ -364,7 +364,7 @@ static void mb_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = mb_cpu_class_by_name; cc->class_by_name = mb_cpu_class_by_name;
cc->has_work = mb_cpu_has_work; cc->has_work = mb_cpu_has_work;
cc->do_interrupt = mb_cpu_do_interrupt; cc->tcg_ops.do_interrupt = mb_cpu_do_interrupt;
cc->do_unaligned_access = mb_cpu_do_unaligned_access; cc->do_unaligned_access = mb_cpu_do_unaligned_access;
cc->tcg_ops.cpu_exec_interrupt = mb_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = mb_cpu_exec_interrupt;
cc->dump_state = mb_cpu_dump_state; cc->dump_state = mb_cpu_dump_state;

View file

@ -676,7 +676,6 @@ static void mips_cpu_class_init(ObjectClass *c, void *data)
cc->class_by_name = mips_cpu_class_by_name; cc->class_by_name = mips_cpu_class_by_name;
cc->has_work = mips_cpu_has_work; cc->has_work = mips_cpu_has_work;
cc->do_interrupt = mips_cpu_do_interrupt;
cc->dump_state = mips_cpu_dump_state; cc->dump_state = mips_cpu_dump_state;
cc->set_pc = mips_cpu_set_pc; cc->set_pc = mips_cpu_set_pc;
cc->gdb_read_register = mips_cpu_gdb_read_register; cc->gdb_read_register = mips_cpu_gdb_read_register;
@ -690,10 +689,11 @@ static void mips_cpu_class_init(ObjectClass *c, void *data)
cc->disas_set_info = mips_cpu_disas_set_info; cc->disas_set_info = mips_cpu_disas_set_info;
#ifdef CONFIG_TCG #ifdef CONFIG_TCG
cc->tcg_ops.initialize = mips_tcg_init; cc->tcg_ops.initialize = mips_tcg_init;
cc->tcg_ops.do_interrupt = mips_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = mips_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = mips_cpu_exec_interrupt;
cc->tcg_ops.synchronize_from_tb = mips_cpu_synchronize_from_tb; cc->tcg_ops.synchronize_from_tb = mips_cpu_synchronize_from_tb;
cc->tcg_ops.tlb_fill = mips_cpu_tlb_fill; cc->tcg_ops.tlb_fill = mips_cpu_tlb_fill;
#endif #endif /* CONFIG_TCG */
cc->gdb_num_core_regs = 73; cc->gdb_num_core_regs = 73;
cc->gdb_stop_before_watchpoint = true; cc->gdb_stop_before_watchpoint = true;

View file

@ -107,7 +107,7 @@ static void moxie_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = moxie_cpu_class_by_name; cc->class_by_name = moxie_cpu_class_by_name;
cc->has_work = moxie_cpu_has_work; cc->has_work = moxie_cpu_has_work;
cc->do_interrupt = moxie_cpu_do_interrupt; cc->tcg_ops.do_interrupt = moxie_cpu_do_interrupt;
cc->dump_state = moxie_cpu_dump_state; cc->dump_state = moxie_cpu_dump_state;
cc->set_pc = moxie_cpu_set_pc; cc->set_pc = moxie_cpu_set_pc;
cc->tcg_ops.tlb_fill = moxie_cpu_tlb_fill; cc->tcg_ops.tlb_fill = moxie_cpu_tlb_fill;

View file

@ -221,7 +221,7 @@ static void nios2_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = nios2_cpu_class_by_name; cc->class_by_name = nios2_cpu_class_by_name;
cc->has_work = nios2_cpu_has_work; cc->has_work = nios2_cpu_has_work;
cc->do_interrupt = nios2_cpu_do_interrupt; cc->tcg_ops.do_interrupt = nios2_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = nios2_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = nios2_cpu_exec_interrupt;
cc->dump_state = nios2_cpu_dump_state; cc->dump_state = nios2_cpu_dump_state;
cc->set_pc = nios2_cpu_set_pc; cc->set_pc = nios2_cpu_set_pc;

View file

@ -186,7 +186,7 @@ static void openrisc_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = openrisc_cpu_class_by_name; cc->class_by_name = openrisc_cpu_class_by_name;
cc->has_work = openrisc_cpu_has_work; cc->has_work = openrisc_cpu_has_work;
cc->do_interrupt = openrisc_cpu_do_interrupt; cc->tcg_ops.do_interrupt = openrisc_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = openrisc_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = openrisc_cpu_exec_interrupt;
cc->dump_state = openrisc_cpu_dump_state; cc->dump_state = openrisc_cpu_dump_state;
cc->set_pc = openrisc_cpu_set_pc; cc->set_pc = openrisc_cpu_set_pc;

View file

@ -10845,7 +10845,6 @@ static void ppc_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = ppc_cpu_class_by_name; cc->class_by_name = ppc_cpu_class_by_name;
cc->has_work = ppc_cpu_has_work; cc->has_work = ppc_cpu_has_work;
cc->do_interrupt = ppc_cpu_do_interrupt;
cc->dump_state = ppc_cpu_dump_state; cc->dump_state = ppc_cpu_dump_state;
cc->dump_statistics = ppc_cpu_dump_statistics; cc->dump_statistics = ppc_cpu_dump_statistics;
cc->set_pc = ppc_cpu_set_pc; cc->set_pc = ppc_cpu_set_pc;
@ -10883,6 +10882,7 @@ static void ppc_cpu_class_init(ObjectClass *oc, void *data)
#ifdef CONFIG_TCG #ifdef CONFIG_TCG
cc->tcg_ops.initialize = ppc_translate_init; cc->tcg_ops.initialize = ppc_translate_init;
cc->tcg_ops.cpu_exec_interrupt = ppc_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = ppc_cpu_exec_interrupt;
cc->tcg_ops.do_interrupt = ppc_cpu_do_interrupt;
cc->tcg_ops.tlb_fill = ppc_cpu_tlb_fill; cc->tcg_ops.tlb_fill = ppc_cpu_tlb_fill;
#ifndef CONFIG_USER_ONLY #ifndef CONFIG_USER_ONLY
cc->tcg_ops.cpu_exec_enter = ppc_cpu_exec_enter; cc->tcg_ops.cpu_exec_enter = ppc_cpu_exec_enter;

View file

@ -593,7 +593,7 @@ static void riscv_cpu_class_init(ObjectClass *c, void *data)
cc->class_by_name = riscv_cpu_class_by_name; cc->class_by_name = riscv_cpu_class_by_name;
cc->has_work = riscv_cpu_has_work; cc->has_work = riscv_cpu_has_work;
cc->do_interrupt = riscv_cpu_do_interrupt; cc->tcg_ops.do_interrupt = riscv_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = riscv_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = riscv_cpu_exec_interrupt;
cc->dump_state = riscv_cpu_dump_state; cc->dump_state = riscv_cpu_dump_state;
cc->set_pc = riscv_cpu_set_pc; cc->set_pc = riscv_cpu_set_pc;

View file

@ -186,7 +186,7 @@ static void rx_cpu_class_init(ObjectClass *klass, void *data)
cc->class_by_name = rx_cpu_class_by_name; cc->class_by_name = rx_cpu_class_by_name;
cc->has_work = rx_cpu_has_work; cc->has_work = rx_cpu_has_work;
cc->do_interrupt = rx_cpu_do_interrupt; cc->tcg_ops.do_interrupt = rx_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = rx_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = rx_cpu_exec_interrupt;
cc->dump_state = rx_cpu_dump_state; cc->dump_state = rx_cpu_dump_state;
cc->set_pc = rx_cpu_set_pc; cc->set_pc = rx_cpu_set_pc;

View file

@ -496,7 +496,7 @@ static void s390_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = s390_cpu_class_by_name, cc->class_by_name = s390_cpu_class_by_name,
cc->has_work = s390_cpu_has_work; cc->has_work = s390_cpu_has_work;
#ifdef CONFIG_TCG #ifdef CONFIG_TCG
cc->do_interrupt = s390_cpu_do_interrupt; cc->tcg_ops.do_interrupt = s390_cpu_do_interrupt;
#endif #endif
cc->dump_state = s390_cpu_dump_state; cc->dump_state = s390_cpu_dump_state;
cc->set_pc = s390_cpu_set_pc; cc->set_pc = s390_cpu_set_pc;

View file

@ -219,7 +219,7 @@ static void superh_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = superh_cpu_class_by_name; cc->class_by_name = superh_cpu_class_by_name;
cc->has_work = superh_cpu_has_work; cc->has_work = superh_cpu_has_work;
cc->do_interrupt = superh_cpu_do_interrupt; cc->tcg_ops.do_interrupt = superh_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = superh_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = superh_cpu_exec_interrupt;
cc->dump_state = superh_cpu_dump_state; cc->dump_state = superh_cpu_dump_state;
cc->set_pc = superh_cpu_set_pc; cc->set_pc = superh_cpu_set_pc;

View file

@ -863,7 +863,7 @@ static void sparc_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = sparc_cpu_class_by_name; cc->class_by_name = sparc_cpu_class_by_name;
cc->parse_features = sparc_cpu_parse_features; cc->parse_features = sparc_cpu_parse_features;
cc->has_work = sparc_cpu_has_work; cc->has_work = sparc_cpu_has_work;
cc->do_interrupt = sparc_cpu_do_interrupt; cc->tcg_ops.do_interrupt = sparc_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = sparc_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = sparc_cpu_exec_interrupt;
cc->dump_state = sparc_cpu_dump_state; cc->dump_state = sparc_cpu_dump_state;
#if !defined(TARGET_SPARC64) && !defined(CONFIG_USER_ONLY) #if !defined(TARGET_SPARC64) && !defined(CONFIG_USER_ONLY)

View file

@ -147,7 +147,7 @@ static void tilegx_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = tilegx_cpu_class_by_name; cc->class_by_name = tilegx_cpu_class_by_name;
cc->has_work = tilegx_cpu_has_work; cc->has_work = tilegx_cpu_has_work;
cc->do_interrupt = tilegx_cpu_do_interrupt; cc->tcg_ops.do_interrupt = tilegx_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = tilegx_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = tilegx_cpu_exec_interrupt;
cc->dump_state = tilegx_cpu_dump_state; cc->dump_state = tilegx_cpu_dump_state;
cc->set_pc = tilegx_cpu_set_pc; cc->set_pc = tilegx_cpu_set_pc;

View file

@ -131,7 +131,7 @@ static void uc32_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = uc32_cpu_class_by_name; cc->class_by_name = uc32_cpu_class_by_name;
cc->has_work = uc32_cpu_has_work; cc->has_work = uc32_cpu_has_work;
cc->do_interrupt = uc32_cpu_do_interrupt; cc->tcg_ops.do_interrupt = uc32_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = uc32_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = uc32_cpu_exec_interrupt;
cc->dump_state = uc32_cpu_dump_state; cc->dump_state = uc32_cpu_dump_state;
cc->set_pc = uc32_cpu_set_pc; cc->set_pc = uc32_cpu_set_pc;

View file

@ -194,7 +194,7 @@ static void xtensa_cpu_class_init(ObjectClass *oc, void *data)
cc->class_by_name = xtensa_cpu_class_by_name; cc->class_by_name = xtensa_cpu_class_by_name;
cc->has_work = xtensa_cpu_has_work; cc->has_work = xtensa_cpu_has_work;
cc->do_interrupt = xtensa_cpu_do_interrupt; cc->tcg_ops.do_interrupt = xtensa_cpu_do_interrupt;
cc->tcg_ops.cpu_exec_interrupt = xtensa_cpu_exec_interrupt; cc->tcg_ops.cpu_exec_interrupt = xtensa_cpu_exec_interrupt;
cc->dump_state = xtensa_cpu_dump_state; cc->dump_state = xtensa_cpu_dump_state;
cc->set_pc = xtensa_cpu_set_pc; cc->set_pc = xtensa_cpu_set_pc;