From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38665) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZwJK1-0004KK-7H for qemu-devel@nongnu.org; Tue, 10 Nov 2015 19:31:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZwJJy-000506-N5 for qemu-devel@nongnu.org; Tue, 10 Nov 2015 19:31:33 -0500 From: Benjamin Herrenschmidt Date: Wed, 11 Nov 2015 11:28:14 +1100 Message-Id: <1447201710-10229-62-git-send-email-benh@kernel.crashing.org> In-Reply-To: <1447201710-10229-1-git-send-email-benh@kernel.crashing.org> References: <1447201710-10229-1-git-send-email-benh@kernel.crashing.org> Subject: [Qemu-devel] [PATCH 61/77] ppc: SPURR & PURR are HV writeable and privileged List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-ppc@nongnu.org Cc: qemu-devel@nongnu.org Those are HV writeable, so we provide a dummy write. We eventually need to provide a better emulation but for now this will get us going. We also make them non-user readable as per the architecture. Signed-off-by: Benjamin Herrenschmidt --- target-ppc/translate_init.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index e3887e7..e2efdf3 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -293,6 +293,12 @@ static void spr_read_purr (DisasContext *ctx, int gprn, int sprn) gen_helper_load_purr(cpu_gpr[gprn], cpu_env); } +__attribute__ (( unused )) +static void spr_write_purr (DisasContext *ctx, int gprn, int sprn) +{ + // Temporary placeholder +} + /* HDECR */ static void spr_read_hdecr (DisasContext *ctx, int gprn, int sprn) { @@ -7860,14 +7866,16 @@ static void gen_spr_book3s_purr(CPUPPCState *env) { #if !defined(CONFIG_USER_ONLY) /* PURR & SPURR: Hack - treat these as aliases for the TB for now */ - spr_register_kvm(env, SPR_PURR, "PURR", - &spr_read_purr, SPR_NOACCESS, - &spr_read_purr, SPR_NOACCESS, - KVM_REG_PPC_PURR, 0x00000000); - spr_register_kvm(env, SPR_SPURR, "SPURR", - &spr_read_purr, SPR_NOACCESS, - &spr_read_purr, SPR_NOACCESS, - KVM_REG_PPC_SPURR, 0x00000000); + spr_register_kvm_hv(env, SPR_PURR, "PURR", + SPR_NOACCESS, SPR_NOACCESS, + &spr_read_purr, SPR_NOACCESS, + &spr_read_purr, &spr_write_purr, + KVM_REG_PPC_PURR, 0x00000000); + spr_register_kvm_hv(env, SPR_SPURR, "SPURR", + SPR_NOACCESS, SPR_NOACCESS, + &spr_read_purr, SPR_NOACCESS, + &spr_read_purr, &spr_write_purr, + KVM_REG_PPC_SPURR, 0x00000000); #endif } -- 2.5.0