Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
target/riscv: add CPU QOM header
QMP CPU commands are usually implemented by a separated file, <arch>-qmp-cmds.c, to allow them to be build only for softmmu targets. This file uses a CPU QOM header with basic QOM declarations for the arch. We'll introduce query-cpu-definitions for RISC-V CPUs in the next patch, but first we need a cpu-qom.h header with the definitions of TYPE_RISCV_CPU and RISCVCPUClass declarations. These were moved from cpu.h to the new file, and cpu.h now includes "cpu-qom.h". Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-Id: <20230411183511.189632-2-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
- Loading branch information
1 parent
2e6dba1
commit 85840bd
Showing
2 changed files
with
71 additions
and
45 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,70 @@ | ||
| /* | ||
| * QEMU RISC-V CPU QOM header | ||
| * | ||
| * Copyright (c) 2023 Ventana Micro Systems Inc. | ||
| * | ||
| * This program is free software; you can redistribute it and/or modify it | ||
| * under the terms and conditions of the GNU General Public License, | ||
| * version 2 or later, as published by the Free Software Foundation. | ||
| * | ||
| * This program is distributed in the hope it will be useful, but WITHOUT | ||
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
| * more details. | ||
| * | ||
| * You should have received a copy of the GNU General Public License along with | ||
| * this program. If not, see <http://www.gnu.org/licenses/>. | ||
| */ | ||
|
|
||
| #ifndef RISCV_CPU_QOM_H | ||
| #define RISCV_CPU_QOM_H | ||
|
|
||
| #include "hw/core/cpu.h" | ||
| #include "qom/object.h" | ||
|
|
||
| #define TYPE_RISCV_CPU "riscv-cpu" | ||
|
|
||
| #define RISCV_CPU_TYPE_SUFFIX "-" TYPE_RISCV_CPU | ||
| #define RISCV_CPU_TYPE_NAME(name) (name RISCV_CPU_TYPE_SUFFIX) | ||
| #define CPU_RESOLVING_TYPE TYPE_RISCV_CPU | ||
|
|
||
| #define TYPE_RISCV_CPU_ANY RISCV_CPU_TYPE_NAME("any") | ||
| #define TYPE_RISCV_CPU_BASE32 RISCV_CPU_TYPE_NAME("rv32") | ||
| #define TYPE_RISCV_CPU_BASE64 RISCV_CPU_TYPE_NAME("rv64") | ||
| #define TYPE_RISCV_CPU_BASE128 RISCV_CPU_TYPE_NAME("x-rv128") | ||
| #define TYPE_RISCV_CPU_IBEX RISCV_CPU_TYPE_NAME("lowrisc-ibex") | ||
| #define TYPE_RISCV_CPU_SHAKTI_C RISCV_CPU_TYPE_NAME("shakti-c") | ||
| #define TYPE_RISCV_CPU_SIFIVE_E31 RISCV_CPU_TYPE_NAME("sifive-e31") | ||
| #define TYPE_RISCV_CPU_SIFIVE_E34 RISCV_CPU_TYPE_NAME("sifive-e34") | ||
| #define TYPE_RISCV_CPU_SIFIVE_E51 RISCV_CPU_TYPE_NAME("sifive-e51") | ||
| #define TYPE_RISCV_CPU_SIFIVE_U34 RISCV_CPU_TYPE_NAME("sifive-u34") | ||
| #define TYPE_RISCV_CPU_SIFIVE_U54 RISCV_CPU_TYPE_NAME("sifive-u54") | ||
| #define TYPE_RISCV_CPU_THEAD_C906 RISCV_CPU_TYPE_NAME("thead-c906") | ||
| #define TYPE_RISCV_CPU_HOST RISCV_CPU_TYPE_NAME("host") | ||
|
|
||
| #if defined(TARGET_RISCV32) | ||
| # define TYPE_RISCV_CPU_BASE TYPE_RISCV_CPU_BASE32 | ||
| #elif defined(TARGET_RISCV64) | ||
| # define TYPE_RISCV_CPU_BASE TYPE_RISCV_CPU_BASE64 | ||
| #endif | ||
|
|
||
| typedef struct CPUArchState CPURISCVState; | ||
|
|
||
| OBJECT_DECLARE_CPU_TYPE(RISCVCPU, RISCVCPUClass, RISCV_CPU) | ||
|
|
||
| /** | ||
| * RISCVCPUClass: | ||
| * @parent_realize: The parent class' realize handler. | ||
| * @parent_phases: The parent class' reset phase handlers. | ||
| * | ||
| * A RISCV CPU model. | ||
| */ | ||
| struct RISCVCPUClass { | ||
| /*< private >*/ | ||
| CPUClass parent_class; | ||
| /*< public >*/ | ||
| DeviceRealize parent_realize; | ||
| ResettablePhases parent_phases; | ||
| }; | ||
|
|
||
| #endif /* RISCV_CPU_QOM_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters