diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index c5de9fc95c..26f41272a7 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -27,6 +27,7 @@ #include "cpu_ppc64.h" #include "cpu_s390.h" #include "cpu_arm.h" +#include "cpu_riscv64.h" #include "capabilities.h" @@ -39,6 +40,7 @@ static struct cpuArchDriver *drivers[] = { &cpuDriverPPC64, &cpuDriverS390, &cpuDriverArm, + &cpuDriverRiscv64, }; diff --git a/src/cpu/cpu_riscv64.c b/src/cpu/cpu_riscv64.c new file mode 100644 index 0000000000..c44bdeb291 --- /dev/null +++ b/src/cpu/cpu_riscv64.c @@ -0,0 +1,59 @@ +/* + * cpu_riscv64.c: CPU driver for riscv64 CPUs + * + * Copyright (C) 2023, Ventana Micro + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * . + */ + +#include + +#include "cpu.h" + + +#define VIR_FROM_THIS VIR_FROM_CPU + +static const virArch archs[] = { VIR_ARCH_RISCV64 }; + +static virCPUCompareResult +virCPURiscv64Compare(virCPUDef *host G_GNUC_UNUSED, + virCPUDef *cpu G_GNUC_UNUSED, + bool failMessages G_GNUC_UNUSED) +{ + /* + * For now QEMU will perform all runtime checks. + */ + return VIR_CPU_COMPARE_IDENTICAL; +} + + +static int +virCPURiscv64ValidateFeatures(virCPUDef *cpu G_GNUC_UNUSED) +{ + return 0; +} + + +struct cpuArchDriver cpuDriverRiscv64 = { + .name = "riscv64", + .arch = archs, + .narch = G_N_ELEMENTS(archs), + .compare = virCPURiscv64Compare, + .decode = NULL, + .encode = NULL, + .baseline = NULL, + .update = NULL, + .validateFeatures = virCPURiscv64ValidateFeatures, +}; diff --git a/src/cpu/cpu_riscv64.h b/src/cpu/cpu_riscv64.h new file mode 100644 index 0000000000..ac61477bd3 --- /dev/null +++ b/src/cpu/cpu_riscv64.h @@ -0,0 +1,25 @@ +/* + * cpu_riscv64.h: CPU driver for riscv64 CPUs + * + * Copyright (c) 2023, Ventana Micro + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * . + */ + +#pragma once + +#include "cpu.h" + +extern struct cpuArchDriver cpuDriverRiscv64; diff --git a/src/cpu/meson.build b/src/cpu/meson.build index b4ad95e46d..55396903b9 100644 --- a/src/cpu/meson.build +++ b/src/cpu/meson.build @@ -3,6 +3,7 @@ cpu_sources = [ 'cpu_arm.c', 'cpu_map.c', 'cpu_ppc64.c', + 'cpu_riscv64.c', 'cpu_s390.c', 'cpu_x86.c', ]