From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38784) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VuvTs-0001bv-7z for qemu-devel@nongnu.org; Sun, 22 Dec 2013 21:43:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VuvTd-0004qk-9B for qemu-devel@nongnu.org; Sun, 22 Dec 2013 21:42:56 -0500 Received: from e23smtp06.au.ibm.com ([202.81.31.148]:44473) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VuvTa-0004q8-7T for qemu-devel@nongnu.org; Sun, 22 Dec 2013 21:42:41 -0500 Received: from /spool/local by e23smtp06.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 23 Dec 2013 12:42:28 +1000 From: Alexey Kardashevskiy Date: Mon, 23 Dec 2013 13:42:22 +1100 Message-Id: <1387766542-3184-1-git-send-email-aik@ozlabs.ru> Subject: [Qemu-devel] [PATCH] target-ppc: disable unsupported modes for SPR_CTRL/SPR_UCTRL List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Alexey Kardashevskiy , qemu-ppc@nongnu.org, Alexander Graf The Figure 17 "SPR encodings" of the PowerISA 2.07 describes CTRL SPR as: priviledged # spr5-9 spr0-4 name mtspr mfspr len cat 136 00100 01000 CTRL - no 32 S 152 00100 11000 CTRL yes - 32 S According to this chart, the hypervisor's CTRL (#152) does not support reading, the user-space's CTRL (UCTRL, #136) does not support writing. This replaces unsupported operations with the default SPR_NOACCESS hook. Signed-off-by: Alexey Kardashevskiy --- While we are on this topic, I thought it makes sense to fix this too. This does not seem to affect anything in the current QEMU but it is more correct/clean. --- target-ppc/translate_init.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index 93ad762..860e241 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -6737,11 +6737,11 @@ static void init_proc_970FX (CPUPPCState *env) 0x00000000); spr_register(env, SPR_CTRL, "SPR_CTRL", SPR_NOACCESS, SPR_NOACCESS, - &spr_read_generic, &spr_write_generic, + SPR_NOACCESS, &spr_write_generic, 0x00000000); spr_register(env, SPR_UCTRL, "SPR_UCTRL", SPR_NOACCESS, SPR_NOACCESS, - &spr_read_generic, &spr_write_generic, + &spr_read_generic, SPR_NOACCESS, 0x00000000); spr_register(env, SPR_VRSAVE, "SPR_VRSAVE", &spr_read_generic, &spr_write_generic, @@ -6902,11 +6902,11 @@ static void init_proc_power5plus(CPUPPCState *env) 0x00000000); spr_register(env, SPR_CTRL, "SPR_CTRL", SPR_NOACCESS, SPR_NOACCESS, - &spr_read_generic, &spr_write_generic, + SPR_NOACCESS, &spr_write_generic, 0x00000000); spr_register(env, SPR_UCTRL, "SPR_UCTRL", SPR_NOACCESS, SPR_NOACCESS, - &spr_read_generic, &spr_write_generic, + &spr_read_generic, SPR_NOACCESS, 0x00000000); spr_register(env, SPR_VRSAVE, "SPR_VRSAVE", &spr_read_generic, &spr_write_generic, @@ -7002,11 +7002,11 @@ static void init_proc_POWER7 (CPUPPCState *env) /* XXX : not implemented */ spr_register(env, SPR_CTRL, "SPR_CTRLT", SPR_NOACCESS, SPR_NOACCESS, - &spr_read_generic, &spr_write_generic, + SPR_NOACCESS, &spr_write_generic, 0x80800000); spr_register(env, SPR_UCTRL, "SPR_CTRLF", SPR_NOACCESS, SPR_NOACCESS, - &spr_read_generic, &spr_write_generic, + &spr_read_generic, SPR_NOACCESS, 0x80800000); spr_register(env, SPR_VRSAVE, "SPR_VRSAVE", &spr_read_generic, &spr_write_generic, -- 1.8.4.rc4