diff options
author | David Gibson | 2017-08-08 05:42:53 +0200 |
---|---|---|
committer | David Gibson | 2017-08-09 03:46:44 +0200 |
commit | 650f3287abb7c6124b7fb0f4a2330246fe2d4da2 (patch) | |
tree | ea79a4602035d07276291ac11f7150798b1934ec /target | |
parent | ppc: fix double-free in cpu_post_load() (diff) | |
download | qemu-650f3287abb7c6124b7fb0f4a2330246fe2d4da2.tar.gz qemu-650f3287abb7c6124b7fb0f4a2330246fe2d4da2.tar.xz qemu-650f3287abb7c6124b7fb0f4a2330246fe2d4da2.zip |
target/ppc: Implement TIDR
This adds a trivial implementation of the TIDR register added in
POWER9. This isn't particularly important to qemu directly - it's
used by accelerator modules that we don't emulate.
However, since qemu isn't aware of it, its state is not synchronized
with KVM and therefore not migrated, which can be a problem.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Diffstat (limited to 'target')
-rw-r--r-- | target/ppc/cpu.h | 1 | ||||
-rw-r--r-- | target/ppc/translate_init.c | 5 |
2 files changed, 6 insertions, 0 deletions
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 6ee2a26a96..f6e5413fad 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -1451,6 +1451,7 @@ void ppc_compat_add_property(Object *obj, const char *name, #define SPR_TEXASR (0x082) #define SPR_TEXASRU (0x083) #define SPR_UCTRL (0x088) +#define SPR_TIDR (0x090) #define SPR_MPC_CMPA (0x090) #define SPR_MPC_CMPB (0x091) #define SPR_MPC_CMPC (0x092) diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c index 01723bdfec..94800cd29d 100644 --- a/target/ppc/translate_init.c +++ b/target/ppc/translate_init.c @@ -8841,6 +8841,11 @@ static void init_proc_POWER9(CPUPPCState *env) gen_spr_power8_book4(env); gen_spr_power8_rpr(env); + /* POWER9 Specific registers */ + spr_register_kvm(env, SPR_TIDR, "TIDR", NULL, NULL, + spr_read_generic, spr_write_generic, + KVM_REG_PPC_TIDR, 0); + /* env variables */ #if !defined(CONFIG_USER_ONLY) env->slb_nr = 32; |