Message ID | 1500468850-15571-6-git-send-email-thuth@redhat.com |
---|---|
State | New |
Headers | show |
On 07/19/2017 02:54 AM, Thomas Huth wrote: > cc->has_work = s390_cpu_has_work; > +#ifdef CONFIG_TCG > cc->do_interrupt = s390_cpu_do_interrupt; > +#endif > cc->dump_state = s390_cpu_dump_state; > cc->set_pc = s390_cpu_set_pc; > cc->gdb_read_register = s390_cpu_gdb_read_register; > @@ -428,10 +430,12 @@ static void s390_cpu_class_init(ObjectClass *oc, void *data) > cc->get_phys_page_debug = s390_cpu_get_phys_page_debug; > cc->vmsd = &vmstate_s390_cpu; > cc->write_elf64_note = s390_cpu_write_elf64_note; > +#ifdef CONFIG_TCG > cc->cpu_exec_interrupt = s390_cpu_exec_interrupt; > cc->debug_excp_handler = s390x_cpu_debug_excp_handler; > cc->do_unaligned_access = s390x_cpu_do_unaligned_access; > #endif > +#endif These ought to be if (tcg_enabled()), surely. r~
On 19.07.2017 20:13, Richard Henderson wrote: > On 07/19/2017 02:54 AM, Thomas Huth wrote: >> cc->has_work = s390_cpu_has_work; >> +#ifdef CONFIG_TCG >> cc->do_interrupt = s390_cpu_do_interrupt; >> +#endif >> cc->dump_state = s390_cpu_dump_state; >> cc->set_pc = s390_cpu_set_pc; >> cc->gdb_read_register = s390_cpu_gdb_read_register; >> @@ -428,10 +430,12 @@ static void s390_cpu_class_init(ObjectClass *oc, >> void *data) >> cc->get_phys_page_debug = s390_cpu_get_phys_page_debug; >> cc->vmsd = &vmstate_s390_cpu; >> cc->write_elf64_note = s390_cpu_write_elf64_note; >> +#ifdef CONFIG_TCG >> cc->cpu_exec_interrupt = s390_cpu_exec_interrupt; >> cc->debug_excp_handler = s390x_cpu_debug_excp_handler; >> cc->do_unaligned_access = s390x_cpu_do_unaligned_access; >> #endif >> +#endif > > These ought to be if (tcg_enabled()), surely. I've tried that, but it does not work: s390_cpu_class_init() is called before tcg_exec_init() (where tcg_allowed is initialized). So tcg_enabled() always returns 0 here. ... so I guess I better keep the patch in the current shape, especially since x86 is doing it this way, too: http://git.qemu.org/?p=qemu.git;a=commitdiff;h=79c664f6 Thomas
diff --git a/target/s390x/Makefile.objs b/target/s390x/Makefile.objs index cc2b4c9..f42cd1f 100644 --- a/target/s390x/Makefile.objs +++ b/target/s390x/Makefile.objs @@ -1,6 +1,6 @@ -obj-y += translate.o helper.o cpu.o interrupt.o -obj-y += int_helper.o fpu_helper.o cc_helper.o mem_helper.o misc_helper.o -obj-y += gdbstub.o cpu_models.o cpu_features.o excp_helper.o +obj-y += cpu.o cpu_models.o cpu_features.o gdbstub.o interrupt.o helper.o +obj-$(CONFIG_TCG) += translate.o cc_helper.o excp_helper.o fpu_helper.o +obj-$(CONFIG_TCG) += int_helper.o mem_helper.o misc_helper.o obj-$(CONFIG_SOFTMMU) += machine.o ioinst.o arch_dump.o mmu_helper.o diag.o obj-$(CONFIG_KVM) += kvm.o diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index accef03..489bc25 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -417,7 +417,9 @@ static void s390_cpu_class_init(ObjectClass *oc, void *data) cc->reset = s390_cpu_full_reset; cc->class_by_name = s390_cpu_class_by_name, cc->has_work = s390_cpu_has_work; +#ifdef CONFIG_TCG cc->do_interrupt = s390_cpu_do_interrupt; +#endif cc->dump_state = s390_cpu_dump_state; cc->set_pc = s390_cpu_set_pc; cc->gdb_read_register = s390_cpu_gdb_read_register; @@ -428,10 +430,12 @@ static void s390_cpu_class_init(ObjectClass *oc, void *data) cc->get_phys_page_debug = s390_cpu_get_phys_page_debug; cc->vmsd = &vmstate_s390_cpu; cc->write_elf64_note = s390_cpu_write_elf64_note; +#ifdef CONFIG_TCG cc->cpu_exec_interrupt = s390_cpu_exec_interrupt; cc->debug_excp_handler = s390x_cpu_debug_excp_handler; cc->do_unaligned_access = s390x_cpu_do_unaligned_access; #endif +#endif cc->disas_set_info = s390_cpu_disas_set_info; cc->gdb_num_core_regs = S390_NUM_CORE_REGS;
Adding some CONFIG_TCG tests to be finally able to compile QEMU on s390x also without TCG. Signed-off-by: Thomas Huth <thuth@redhat.com> --- target/s390x/Makefile.objs | 6 +++--- target/s390x/cpu.c | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-)