From patchwork Thu Oct 13 16:24:43 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 681853 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3svx4Z4DK6z9sC3 for ; Fri, 14 Oct 2016 03:28:46 +1100 (AEDT) Received: from localhost ([::1]:41750 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1buis7-00073i-EN for incoming@patchwork.ozlabs.org; Thu, 13 Oct 2016 12:28:43 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42114) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1buioj-0003s0-SH for qemu-devel@nongnu.org; Thu, 13 Oct 2016 12:25:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1buioh-0007n2-6I for qemu-devel@nongnu.org; Thu, 13 Oct 2016 12:25:12 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51514) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1buiog-0007mo-St for qemu-devel@nongnu.org; Thu, 13 Oct 2016 12:25:11 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5646C7F7A6; Thu, 13 Oct 2016 16:25:10 +0000 (UTC) Received: from thinkpad.redhat.com (ovpn-112-33.ams2.redhat.com [10.36.112.33]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u9DGP2mo010294; Thu, 13 Oct 2016 12:25:07 -0400 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Thu, 13 Oct 2016 18:24:43 +0200 Message-Id: <1476375902-11715-2-git-send-email-lvivier@redhat.com> In-Reply-To: <1476375902-11715-1-git-send-email-lvivier@redhat.com> References: <1476375902-11715-1-git-send-email-lvivier@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 13 Oct 2016 16:25:10 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 01/20] exec: split cpu_exec_init() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Matthew Rosato , Peter Maydell , Eduardo Habkost , Laurent Vivier , Markus Armbruster , Bharata B Rao , Paolo Bonzini , David Gibson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Extract the realize part to cpu_exec_realize(), update all calls to cpu_exec_init() to add cpu_exec_realize() to have no functionnal change. Put in cpu_exec_init() what initializes the CPU, in cpu_exec_realize() what adds it to the environment. Remove error parameter from cpu_exec_init() as it can't fail. Rename cpu_exec_exit() with cpu_exec_unrealize(): cpu_exec_exit() is undoing what it has been done by cpu_exec_realize(), so call it cpu_exec_unrealize(). CC: Paolo Bonzini Signed-off-by: Laurent Vivier Reviewed-by: David Gibson Reviewed-by: Greg Kurz --- exec.c | 12 +++++++----- include/exec/exec-all.h | 3 ++- include/qom/cpu.h | 2 +- qom/cpu.c | 2 +- target-alpha/cpu.c | 3 ++- target-arm/cpu.c | 3 ++- target-cris/cpu.c | 3 ++- target-i386/cpu.c | 3 ++- target-lm32/cpu.c | 3 ++- target-m68k/cpu.c | 3 ++- target-microblaze/cpu.c | 3 ++- target-mips/cpu.c | 3 ++- target-moxie/cpu.c | 3 ++- target-openrisc/cpu.c | 3 ++- target-ppc/translate_init.c | 5 +++-- target-s390x/cpu.c | 3 ++- target-sh4/cpu.c | 3 ++- target-sparc/cpu.c | 3 ++- target-tilegx/cpu.c | 3 ++- target-tricore/cpu.c | 3 ++- target-unicore32/cpu.c | 3 ++- target-xtensa/cpu.c | 3 ++- 22 files changed, 48 insertions(+), 27 deletions(-) diff --git a/exec.c b/exec.c index 374c364..885dc79 100644 --- a/exec.c +++ b/exec.c @@ -596,7 +596,7 @@ AddressSpace *cpu_get_address_space(CPUState *cpu, int asidx) } #endif -void cpu_exec_exit(CPUState *cpu) +void cpu_exec_unrealize(CPUState *cpu) { CPUClass *cc = CPU_GET_CLASS(cpu); @@ -610,11 +610,8 @@ void cpu_exec_exit(CPUState *cpu) } } -void cpu_exec_init(CPUState *cpu, Error **errp) +void cpu_exec_init(CPUState *cpu) { - CPUClass *cc ATTRIBUTE_UNUSED = CPU_GET_CLASS(cpu); - Error *local_err ATTRIBUTE_UNUSED = NULL; - cpu->as = NULL; cpu->num_ases = 0; @@ -635,6 +632,11 @@ void cpu_exec_init(CPUState *cpu, Error **errp) cpu->memory = system_memory; object_ref(OBJECT(cpu->memory)); #endif +} + +void cpu_exec_realize(CPUState *cpu, Error **errp) +{ + CPUClass *cc ATTRIBUTE_UNUSED = CPU_GET_CLASS(cpu); cpu_list_add(cpu); diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h index 336a57c..b42533e 100644 --- a/include/exec/exec-all.h +++ b/include/exec/exec-all.h @@ -57,7 +57,8 @@ TranslationBlock *tb_gen_code(CPUState *cpu, uint32_t flags, int cflags); -void cpu_exec_init(CPUState *cpu, Error **errp); +void cpu_exec_init(CPUState *cpu); +void cpu_exec_realize(CPUState *cpu, Error **errp); void QEMU_NORETURN cpu_loop_exit(CPUState *cpu); void QEMU_NORETURN cpu_loop_exit_restore(CPUState *cpu, uintptr_t pc); diff --git a/include/qom/cpu.h b/include/qom/cpu.h index 6d481a1..4962980 100644 --- a/include/qom/cpu.h +++ b/include/qom/cpu.h @@ -946,7 +946,7 @@ AddressSpace *cpu_get_address_space(CPUState *cpu, int asidx); void QEMU_NORETURN cpu_abort(CPUState *cpu, const char *fmt, ...) GCC_FMT_ATTR(2, 3); -void cpu_exec_exit(CPUState *cpu); +void cpu_exec_unrealize(CPUState *cpu); #ifdef CONFIG_SOFTMMU extern const struct VMStateDescription vmstate_cpu_common; diff --git a/qom/cpu.c b/qom/cpu.c index c40f774..39590e1 100644 --- a/qom/cpu.c +++ b/qom/cpu.c @@ -367,7 +367,7 @@ static void cpu_common_initfn(Object *obj) static void cpu_common_finalize(Object *obj) { CPUState *cpu = CPU(obj); - cpu_exec_exit(cpu); + cpu_exec_unrealize(CPU(obj)); g_free(cpu->trace_dstate); } diff --git a/target-alpha/cpu.c b/target-alpha/cpu.c index 6d01d7f..98761d7 100644 --- a/target-alpha/cpu.c +++ b/target-alpha/cpu.c @@ -266,7 +266,8 @@ static void alpha_cpu_initfn(Object *obj) CPUAlphaState *env = &cpu->env; cs->env_ptr = env; - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); tlb_flush(cs, 1); alpha_translate_init(); diff --git a/target-arm/cpu.c b/target-arm/cpu.c index 1b9540e..7e58134 100644 --- a/target-arm/cpu.c +++ b/target-arm/cpu.c @@ -444,7 +444,8 @@ static void arm_cpu_initfn(Object *obj) uint32_t Aff1, Aff0; cs->env_ptr = &cpu->env; - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); cpu->cp_regs = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, g_free); diff --git a/target-cris/cpu.c b/target-cris/cpu.c index d680cfb..e28abc1 100644 --- a/target-cris/cpu.c +++ b/target-cris/cpu.c @@ -187,7 +187,8 @@ static void cris_cpu_initfn(Object *obj) static bool tcg_initialized; cs->env_ptr = env; - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); env->pregs[PR_VR] = ccc->vr; diff --git a/target-i386/cpu.c b/target-i386/cpu.c index 1c57fce..b977130 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -3158,7 +3158,8 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp) cpu->phys_bits = 32; } } - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); if (tcg_enabled()) { tcg_x86_init(); diff --git a/target-lm32/cpu.c b/target-lm32/cpu.c index a783d46..147cc60 100644 --- a/target-lm32/cpu.c +++ b/target-lm32/cpu.c @@ -160,7 +160,8 @@ static void lm32_cpu_initfn(Object *obj) static bool tcg_initialized; cs->env_ptr = env; - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); env->flags = 0; diff --git a/target-m68k/cpu.c b/target-m68k/cpu.c index 116b784..2768bbb 100644 --- a/target-m68k/cpu.c +++ b/target-m68k/cpu.c @@ -176,7 +176,8 @@ static void m68k_cpu_initfn(Object *obj) static bool inited; cs->env_ptr = env; - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); if (tcg_enabled() && !inited) { inited = true; diff --git a/target-microblaze/cpu.c b/target-microblaze/cpu.c index 8edc00a..71fd5fc 100644 --- a/target-microblaze/cpu.c +++ b/target-microblaze/cpu.c @@ -199,7 +199,8 @@ static void mb_cpu_initfn(Object *obj) static bool tcg_initialized; cs->env_ptr = env; - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); set_float_rounding_mode(float_round_nearest_even, &env->fp_status); diff --git a/target-mips/cpu.c b/target-mips/cpu.c index 64ad112..1154d11 100644 --- a/target-mips/cpu.c +++ b/target-mips/cpu.c @@ -138,7 +138,8 @@ static void mips_cpu_initfn(Object *obj) CPUMIPSState *env = &cpu->env; cs->env_ptr = env; - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); if (tcg_enabled()) { mips_tcg_init(); diff --git a/target-moxie/cpu.c b/target-moxie/cpu.c index 50a0899..c9eed19 100644 --- a/target-moxie/cpu.c +++ b/target-moxie/cpu.c @@ -75,7 +75,8 @@ static void moxie_cpu_initfn(Object *obj) static int inited; cs->env_ptr = &cpu->env; - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); if (tcg_enabled() && !inited) { inited = 1; diff --git a/target-openrisc/cpu.c b/target-openrisc/cpu.c index 155913f..74d52bf 100644 --- a/target-openrisc/cpu.c +++ b/target-openrisc/cpu.c @@ -95,7 +95,8 @@ static void openrisc_cpu_initfn(Object *obj) static int inited; cs->env_ptr = &cpu->env; - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); #ifndef CONFIG_USER_ONLY cpu_openrisc_mmu_init(cpu); diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index b66b40b..094f28a 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -9678,7 +9678,8 @@ static void ppc_cpu_realizefn(DeviceState *dev, Error **errp) } #endif - cpu_exec_init(cs, &local_err); + cpu_exec_init(cs); + cpu_exec_realize(cs, &local_err); if (local_err != NULL) { error_propagate(errp, local_err); return; @@ -9910,7 +9911,7 @@ static void ppc_cpu_unrealizefn(DeviceState *dev, Error **errp) opc_handler_t **table, **table_2; int i, j, k; - cpu_exec_exit(CPU(dev)); + cpu_exec_unrealize(CPU(dev)); for (i = 0; i < PPC_CPU_OPCODES_LEN; i++) { if (env->opcodes[i] == &invalid_handler) { diff --git a/target-s390x/cpu.c b/target-s390x/cpu.c index 35ae2ce..4339da1 100644 --- a/target-s390x/cpu.c +++ b/target-s390x/cpu.c @@ -207,7 +207,8 @@ static void s390_cpu_realizefn(DeviceState *dev, Error **errp) goto out; } - cpu_exec_init(cs, &err); + cpu_exec_init(cs); + cpu_exec_realize(cs, &err); if (err != NULL) { goto out; } diff --git a/target-sh4/cpu.c b/target-sh4/cpu.c index f589532..60689c7 100644 --- a/target-sh4/cpu.c +++ b/target-sh4/cpu.c @@ -258,7 +258,8 @@ static void superh_cpu_initfn(Object *obj) CPUSH4State *env = &cpu->env; cs->env_ptr = env; - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); env->movcal_backup_tail = &(env->movcal_backup); diff --git a/target-sparc/cpu.c b/target-sparc/cpu.c index 800a25a..135f30c 100644 --- a/target-sparc/cpu.c +++ b/target-sparc/cpu.c @@ -814,7 +814,8 @@ static void sparc_cpu_initfn(Object *obj) CPUSPARCState *env = &cpu->env; cs->env_ptr = env; - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); if (tcg_enabled()) { gen_intermediate_code_init(env); diff --git a/target-tilegx/cpu.c b/target-tilegx/cpu.c index 7017cb6..ae6ea6e 100644 --- a/target-tilegx/cpu.c +++ b/target-tilegx/cpu.c @@ -107,7 +107,8 @@ static void tilegx_cpu_initfn(Object *obj) static bool tcg_initialized; cs->env_ptr = env; - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); if (tcg_enabled() && !tcg_initialized) { tcg_initialized = true; diff --git a/target-tricore/cpu.c b/target-tricore/cpu.c index 35d4ee4..43f444f 100644 --- a/target-tricore/cpu.c +++ b/target-tricore/cpu.c @@ -95,7 +95,8 @@ static void tricore_cpu_initfn(Object *obj) CPUTriCoreState *env = &cpu->env; cs->env_ptr = env; - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); if (tcg_enabled()) { tricore_tcg_init(); diff --git a/target-unicore32/cpu.c b/target-unicore32/cpu.c index e7a4984..ffc01bd 100644 --- a/target-unicore32/cpu.c +++ b/target-unicore32/cpu.c @@ -116,7 +116,8 @@ static void uc32_cpu_initfn(Object *obj) static bool inited; cs->env_ptr = env; - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); #ifdef CONFIG_USER_ONLY env->uncached_asr = ASR_MODE_USER; diff --git a/target-xtensa/cpu.c b/target-xtensa/cpu.c index 5ad08a2..2719b73 100644 --- a/target-xtensa/cpu.c +++ b/target-xtensa/cpu.c @@ -117,7 +117,8 @@ static void xtensa_cpu_initfn(Object *obj) cs->env_ptr = env; env->config = xcc->config; - cpu_exec_init(cs, &error_abort); + cpu_exec_init(cs); + cpu_exec_realize(cs, &error_abort); if (tcg_enabled() && !tcg_inited) { tcg_inited = true;