From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LgmeS-0000os-Nh for qemu-devel@nongnu.org; Mon, 09 Mar 2009 17:04:44 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LgmeR-0000o9-RV for qemu-devel@nongnu.org; Mon, 09 Mar 2009 17:04:44 -0400 Received: from [199.232.76.173] (port=48889 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LgmeR-0000nx-II for qemu-devel@nongnu.org; Mon, 09 Mar 2009 17:04:43 -0400 Received: from mx20.gnu.org ([199.232.41.8]:2569) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LglrF-0006r7-Pc for qemu-devel@nongnu.org; Mon, 09 Mar 2009 16:13:53 -0400 Received: from savannah.gnu.org ([199.232.41.3] helo=sv.gnu.org) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LgYxP-0000yk-VW for qemu-devel@nongnu.org; Mon, 09 Mar 2009 02:27:24 -0400 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1LgYxH-00086C-MU for qemu-devel@nongnu.org; Mon, 09 Mar 2009 06:27:15 +0000 Received: from aurel32 by cvs.savannah.gnu.org with local (Exim 4.69) (envelope-from ) id 1LgYxH-000868-4W for qemu-devel@nongnu.org; Mon, 09 Mar 2009 06:27:15 +0000 MIME-Version: 1.0 Errors-To: aurel32 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Aurelien Jarno Message-Id: Date: Mon, 09 Mar 2009 06:27:15 +0000 Subject: [Qemu-devel] [6789] target-ppc: add support for reading/writing spefscr Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Revision: 6789 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6789 Author: aurel32 Date: 2009-03-09 06:27:14 +0000 (Mon, 09 Mar 2009) Log Message: ----------- target-ppc: add support for reading/writing spefscr Signed-off-by: Aurelien Jarno Modified Paths: -------------- trunk/target-ppc/translate_init.c Modified: trunk/target-ppc/translate_init.c =================================================================== --- trunk/target-ppc/translate_init.c 2009-03-08 19:52:43 UTC (rev 6788) +++ trunk/target-ppc/translate_init.c 2009-03-09 06:27:14 UTC (rev 6789) @@ -448,6 +448,23 @@ } #endif +/* SPE specific registers */ +static void spr_read_spefscr (void *opaque, int gprn, int sprn) +{ + TCGv_i32 t0 = tcg_temp_new_i32(); + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, spe_fscr)); + tcg_gen_extu_i32_tl(cpu_gpr[gprn], t0); + tcg_temp_free_i32(t0); +} + +static void spr_write_spefscr (void *opaque, int sprn, int gprn) +{ + TCGv_i32 t0 = tcg_temp_new_i32(); + tcg_gen_trunc_tl_i32(t0, cpu_gpr[gprn]); + tcg_gen_st_tl(t0, cpu_env, offsetof(CPUState, spe_fscr)); + tcg_temp_free_i32(t0); +} + #if !defined(CONFIG_USER_ONLY) /* Callback used to write the exception vector base */ static void spr_write_excp_prefix (void *opaque, int sprn, int gprn) @@ -2565,7 +2582,6 @@ * HSRR1 => SPR 315 (Power 2.04 hypv) * LPCR => SPR 316 (970) * LPIDR => SPR 317 (970) - * SPEFSCR => SPR 512 (Power 2.04 emb) * EPR => SPR 702 (Power 2.04 emb) * perf => 768-783 (Power 2.04) * perf => 784-799 (Power 2.04) @@ -4021,8 +4037,8 @@ gen_spr_BookE(env, 0x000000070000FFFFULL); /* XXX : not implemented */ spr_register(env, SPR_BOOKE_SPEFSCR, "SPEFSCR", - SPR_NOACCESS, SPR_NOACCESS, - &spr_read_generic, &spr_write_generic, + &spr_read_spefscr, &spr_write_spefscr, + &spr_read_spefscr, &spr_write_spefscr, 0x00000000); /* Memory management */ gen_spr_BookE_FSL(env, 0x0000005D); @@ -4210,8 +4226,8 @@ 0x00000000); /* XXX : not implemented */ spr_register(env, SPR_BOOKE_SPEFSCR, "SPEFSCR", - SPR_NOACCESS, SPR_NOACCESS, - &spr_read_generic, &spr_write_generic, + &spr_read_spefscr, &spr_write_spefscr, + &spr_read_spefscr, &spr_write_spefscr, 0x00000000); /* Memory management */ #if !defined(CONFIG_USER_ONLY) @@ -9428,8 +9444,7 @@ return 8; } if (n == 33) { - /* SPEFSCR not implemented */ - memset(mem_buf, 0, 4); + stl_p(mem_buf, env->spe_fscr); return 4; } return 0; @@ -9452,7 +9467,7 @@ return 8; } if (n == 33) { - /* SPEFSCR not implemented */ + env->spe_fscr = ldl_p(mem_buf); return 4; } return 0;