Message ID | 20231013140116.255-8-philmd@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | target: Make 'cpu-qom.h' really target agnostic | expand |
On 10/13/23 07:01, Philippe Mathieu-Daudé wrote: > "target/foo/cpu.h" contains the target specific declarations. > > A heterogeneous setup need to access target agnostic declarations > (at least the QOM ones, to instantiate the objects). > > Our convention is to add such target agnostic QOM declarations in > the "target/foo/cpu-qom.h" header. > > Extract QOM definitions from "cpu.h" to "cpu-qom.h". > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > target/hexagon/cpu-qom.h | 28 ++++++++++++++++++++++++++++ > target/hexagon/cpu.h | 15 +-------------- > 2 files changed, 29 insertions(+), 14 deletions(-) > create mode 100644 target/hexagon/cpu-qom.h Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
> -----Original Message----- > From: Philippe Mathieu-Daudé <philmd@linaro.org> > Sent: Friday, October 13, 2023 9:01 AM > To: qemu-devel@nongnu.org > Cc: Eduardo Habkost <eduardo@habkost.net>; Xiaojuan Yang > <yangxiaojuan@loongson.cn>; Michael S. Tsirkin <mst@redhat.com>; qemu- > ppc@nongnu.org; Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>; David > Hildenbrand <david@redhat.com>; qemu-s390x@nongnu.org; Edgar E. Iglesias > <edgar.iglesias@gmail.com>; Jiaxun Yang <jiaxun.yang@flygoat.com>; Song > Gao <gaosong@loongson.cn>; Philippe Mathieu-Daudé <philmd@linaro.org>; > Paolo Bonzini <pbonzini@redhat.com>; Stafford Horne <shorne@gmail.com>; > Alistair Francis <alistair.francis@wdc.com>; Yanan Wang > <wangyanan55@huawei.com>; Max Filippov <jcmvbkbc@gmail.com>; Artyom > Tarasenko <atar4qemu@gmail.com>; Marcel Apfelbaum > <marcel.apfelbaum@gmail.com>; Cédric Le Goater <clg@kaod.org>; Laurent > Vivier <lvivier@redhat.com>; Aurelien Jarno <aurelien@aurel32.net>; qemu- > riscv@nongnu.org; Palmer Dabbelt <palmer@dabbelt.com>; Yoshinori Sato > <ysato@users.sourceforge.jp>; Bastian Koppelmann <kbastian@mail.uni- > paderborn.de>; Bin Meng <bin.meng@windriver.com>; Daniel Henrique > Barboza <danielhb413@gmail.com>; Mark Cave-Ayland <mark.cave- > ayland@ilande.co.uk>; Weiwei Li <liweiwei@iscas.ac.cn>; Daniel Henrique > Barboza <dbarboza@ventanamicro.com>; Nicholas Piggin > <npiggin@gmail.com>; qemu-arm@nongnu.org; Liu Zhiwei > <zhiwei_liu@linux.alibaba.com>; Marek Vasut <marex@denx.de>; Laurent > Vivier <laurent@vivier.eu>; Peter Maydell <peter.maydell@linaro.org>; Brian > Cain <bcain@quicinc.com>; Thomas Huth <thuth@redhat.com>; Chris Wulff > <crwulff@gmail.com>; Sergio Lopez <slp@redhat.com>; Richard Henderson > <richard.henderson@linaro.org>; Ilya Leoshkevich <iii@linux.ibm.com>; > Michael Rolnik <mrolnik@gmail.com> > Subject: [PATCH v2 07/16] target/hexagon: Declare QOM definitions in 'cpu- > qom.h' > > WARNING: This email originated from outside of Qualcomm. Please be wary of > any links or attachments, and do not enable macros. > > "target/foo/cpu.h" contains the target specific declarations. > > A heterogeneous setup need to access target agnostic declarations > (at least the QOM ones, to instantiate the objects). > > Our convention is to add such target agnostic QOM declarations in > the "target/foo/cpu-qom.h" header. > > Extract QOM definitions from "cpu.h" to "cpu-qom.h". > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > target/hexagon/cpu-qom.h | 28 ++++++++++++++++++++++++++++ > target/hexagon/cpu.h | 15 +-------------- > 2 files changed, 29 insertions(+), 14 deletions(-) > create mode 100644 target/hexagon/cpu-qom.h > > diff --git a/target/hexagon/cpu-qom.h b/target/hexagon/cpu-qom.h > new file mode 100644 > index 0000000000..f02df7ee6f > --- /dev/null > +++ b/target/hexagon/cpu-qom.h > @@ -0,0 +1,28 @@ > +/* > + * QEMU Hexagon CPU QOM header (target agnostic) > + * > + * Copyright(c) 2019-2023 Qualcomm Innovation Center, Inc. All Rights > Reserved. > + * > + * SPDX-License-Identifier: GPL-2.0-or-later > + */ > + > +#ifndef QEMU_HEXAGON_CPU_QOM_H > +#define QEMU_HEXAGON_CPU_QOM_H > + > +#include "hw/core/cpu.h" > +#include "qom/object.h" > + > +#define TYPE_HEXAGON_CPU "hexagon-cpu" > + > +#define HEXAGON_CPU_TYPE_SUFFIX "-" TYPE_HEXAGON_CPU > +#define HEXAGON_CPU_TYPE_NAME(name) (name > HEXAGON_CPU_TYPE_SUFFIX) > + > +#define TYPE_HEXAGON_CPU_V67 HEXAGON_CPU_TYPE_NAME("v67") > +#define TYPE_HEXAGON_CPU_V68 HEXAGON_CPU_TYPE_NAME("v68") > +#define TYPE_HEXAGON_CPU_V69 HEXAGON_CPU_TYPE_NAME("v69") > +#define TYPE_HEXAGON_CPU_V71 HEXAGON_CPU_TYPE_NAME("v71") > +#define TYPE_HEXAGON_CPU_V73 HEXAGON_CPU_TYPE_NAME("v73") > + > +OBJECT_DECLARE_CPU_TYPE(HexagonCPU, HexagonCPUClass, > HEXAGON_CPU) > + > +#endif > diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h > index 035ac4fb6d..7d16083c6a 100644 > --- a/target/hexagon/cpu.h > +++ b/target/hexagon/cpu.h > @@ -20,11 +20,10 @@ > > #include "fpu/softfloat-types.h" > > +#include "cpu-qom.h" > #include "exec/cpu-defs.h" > #include "hex_regs.h" > #include "mmvec/mmvec.h" > -#include "qom/object.h" > -#include "hw/core/cpu.h" > #include "hw/registerfields.h" > > #define NUM_PREGS 4 > @@ -36,18 +35,8 @@ > #define PRED_WRITES_MAX 5 /* 4 insns + endloop */ > #define VSTORES_MAX 2 > > -#define TYPE_HEXAGON_CPU "hexagon-cpu" > - > -#define HEXAGON_CPU_TYPE_SUFFIX "-" TYPE_HEXAGON_CPU > -#define HEXAGON_CPU_TYPE_NAME(name) (name > HEXAGON_CPU_TYPE_SUFFIX) > #define CPU_RESOLVING_TYPE TYPE_HEXAGON_CPU > > -#define TYPE_HEXAGON_CPU_V67 HEXAGON_CPU_TYPE_NAME("v67") > -#define TYPE_HEXAGON_CPU_V68 HEXAGON_CPU_TYPE_NAME("v68") > -#define TYPE_HEXAGON_CPU_V69 HEXAGON_CPU_TYPE_NAME("v69") > -#define TYPE_HEXAGON_CPU_V71 HEXAGON_CPU_TYPE_NAME("v71") > -#define TYPE_HEXAGON_CPU_V73 HEXAGON_CPU_TYPE_NAME("v73") > - > void hexagon_cpu_list(void); > #define cpu_list hexagon_cpu_list > > @@ -127,8 +116,6 @@ typedef struct CPUArchState { > VTCMStoreLog vtcm_log; > } CPUHexagonState; > > -OBJECT_DECLARE_CPU_TYPE(HexagonCPU, HexagonCPUClass, > HEXAGON_CPU) > - > typedef struct HexagonCPUClass { > CPUClass parent_class; > > -- > 2.41.0 Reviewed-by: Brian Cain <bcain@quicinc.com>
diff --git a/target/hexagon/cpu-qom.h b/target/hexagon/cpu-qom.h new file mode 100644 index 0000000000..f02df7ee6f --- /dev/null +++ b/target/hexagon/cpu-qom.h @@ -0,0 +1,28 @@ +/* + * QEMU Hexagon CPU QOM header (target agnostic) + * + * Copyright(c) 2019-2023 Qualcomm Innovation Center, Inc. All Rights Reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef QEMU_HEXAGON_CPU_QOM_H +#define QEMU_HEXAGON_CPU_QOM_H + +#include "hw/core/cpu.h" +#include "qom/object.h" + +#define TYPE_HEXAGON_CPU "hexagon-cpu" + +#define HEXAGON_CPU_TYPE_SUFFIX "-" TYPE_HEXAGON_CPU +#define HEXAGON_CPU_TYPE_NAME(name) (name HEXAGON_CPU_TYPE_SUFFIX) + +#define TYPE_HEXAGON_CPU_V67 HEXAGON_CPU_TYPE_NAME("v67") +#define TYPE_HEXAGON_CPU_V68 HEXAGON_CPU_TYPE_NAME("v68") +#define TYPE_HEXAGON_CPU_V69 HEXAGON_CPU_TYPE_NAME("v69") +#define TYPE_HEXAGON_CPU_V71 HEXAGON_CPU_TYPE_NAME("v71") +#define TYPE_HEXAGON_CPU_V73 HEXAGON_CPU_TYPE_NAME("v73") + +OBJECT_DECLARE_CPU_TYPE(HexagonCPU, HexagonCPUClass, HEXAGON_CPU) + +#endif diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index 035ac4fb6d..7d16083c6a 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -20,11 +20,10 @@ #include "fpu/softfloat-types.h" +#include "cpu-qom.h" #include "exec/cpu-defs.h" #include "hex_regs.h" #include "mmvec/mmvec.h" -#include "qom/object.h" -#include "hw/core/cpu.h" #include "hw/registerfields.h" #define NUM_PREGS 4 @@ -36,18 +35,8 @@ #define PRED_WRITES_MAX 5 /* 4 insns + endloop */ #define VSTORES_MAX 2 -#define TYPE_HEXAGON_CPU "hexagon-cpu" - -#define HEXAGON_CPU_TYPE_SUFFIX "-" TYPE_HEXAGON_CPU -#define HEXAGON_CPU_TYPE_NAME(name) (name HEXAGON_CPU_TYPE_SUFFIX) #define CPU_RESOLVING_TYPE TYPE_HEXAGON_CPU -#define TYPE_HEXAGON_CPU_V67 HEXAGON_CPU_TYPE_NAME("v67") -#define TYPE_HEXAGON_CPU_V68 HEXAGON_CPU_TYPE_NAME("v68") -#define TYPE_HEXAGON_CPU_V69 HEXAGON_CPU_TYPE_NAME("v69") -#define TYPE_HEXAGON_CPU_V71 HEXAGON_CPU_TYPE_NAME("v71") -#define TYPE_HEXAGON_CPU_V73 HEXAGON_CPU_TYPE_NAME("v73") - void hexagon_cpu_list(void); #define cpu_list hexagon_cpu_list @@ -127,8 +116,6 @@ typedef struct CPUArchState { VTCMStoreLog vtcm_log; } CPUHexagonState; -OBJECT_DECLARE_CPU_TYPE(HexagonCPU, HexagonCPUClass, HEXAGON_CPU) - typedef struct HexagonCPUClass { CPUClass parent_class;
"target/foo/cpu.h" contains the target specific declarations. A heterogeneous setup need to access target agnostic declarations (at least the QOM ones, to instantiate the objects). Our convention is to add such target agnostic QOM declarations in the "target/foo/cpu-qom.h" header. Extract QOM definitions from "cpu.h" to "cpu-qom.h". Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- target/hexagon/cpu-qom.h | 28 ++++++++++++++++++++++++++++ target/hexagon/cpu.h | 15 +-------------- 2 files changed, 29 insertions(+), 14 deletions(-) create mode 100644 target/hexagon/cpu-qom.h