aboutsummaryrefslogtreecommitdiff
path: root/target/riscv/cpu_helper.c
diff options
context:
space:
mode:
authorAlistair Francis <alistair.francis@wdc.com>2020-01-31 17:01:51 -0800
committerPalmer Dabbelt <palmerdabbelt@google.com>2020-02-27 13:45:28 -0800
commitef6bb7b62682badefdcb744831510aaa5971684f (patch)
tree1a72cc6a0b384718505cfbe69521b6bcddaa29c6 /target/riscv/cpu_helper.c
parent205377f8940898e4c53d1b44350a3d4934a2da72 (diff)
downloadqemu-ef6bb7b62682badefdcb744831510aaa5971684f.zip
qemu-ef6bb7b62682badefdcb744831510aaa5971684f.tar.gz
qemu-ef6bb7b62682badefdcb744831510aaa5971684f.tar.bz2
target/riscv: Add the virtulisation mode
Signed-off-by: Alistair Francis <alistair.francis@wdc.com> Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com> Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
Diffstat (limited to 'target/riscv/cpu_helper.c')
-rw-r--r--target/riscv/cpu_helper.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c
index a10582b..e531116 100644
--- a/target/riscv/cpu_helper.c
+++ b/target/riscv/cpu_helper.c
@@ -82,6 +82,24 @@ bool riscv_cpu_fp_enabled(CPURISCVState *env)
return false;
}
+bool riscv_cpu_virt_enabled(CPURISCVState *env)
+{
+ if (!riscv_has_ext(env, RVH)) {
+ return false;
+ }
+
+ return get_field(env->virt, VIRT_ONOFF);
+}
+
+void riscv_cpu_set_virt_enabled(CPURISCVState *env, bool enable)
+{
+ if (!riscv_has_ext(env, RVH)) {
+ return;
+ }
+
+ env->virt = set_field(env->virt, VIRT_ONOFF, enable);
+}
+
int riscv_cpu_claim_interrupts(RISCVCPU *cpu, uint32_t interrupts)
{
CPURISCVState *env = &cpu->env;