From patchwork Tue Feb 15 04:56:17 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: qemu@gibson.dropbear.id.au X-Patchwork-Id: 83173 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 5D834B711D for ; Tue, 15 Feb 2011 15:58:35 +1100 (EST) Received: from localhost ([127.0.0.1]:33420 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PpCzW-0008Tf-QJ for incoming@patchwork.ozlabs.org; Mon, 14 Feb 2011 23:58:22 -0500 Received: from [140.186.70.92] (port=53363 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PpCyE-0008Rr-V9 for qemu-devel@nongnu.org; Mon, 14 Feb 2011 23:57:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PpCyD-0001c0-SC for qemu-devel@nongnu.org; Mon, 14 Feb 2011 23:57:02 -0500 Received: from ozlabs.org ([203.10.76.45]:34737) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PpCyD-0001aL-FG for qemu-devel@nongnu.org; Mon, 14 Feb 2011 23:57:01 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 7C54CB7126; Tue, 15 Feb 2011 15:56:53 +1100 (EST) From: qemu@gibson.dropbear.id.au To: qemu-devel@nongnu.org Date: Tue, 15 Feb 2011 15:56:17 +1100 Message-Id: <1297745799-26148-7-git-send-email-qemu@gibson.dropbear.id.au> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1297745799-26148-1-git-send-email-qemu@gibson.dropbear.id.au> References: <1297745799-26148-1-git-send-email-qemu@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 203.10.76.45 Cc: paulus@samba.org, agraf@suse.de, anton@samba.org Subject: [Qemu-devel] [PATCH 06/28] Implement missing parts of the logic for the POWER PURR X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: David Gibson The PURR (Processor Utilization Resource Register) is a register found on recent POWER CPUs. The guts of implementing it at least enough to get by are already present in qemu, however some of the helper functions needed to actually wire it up are missing. This patch adds the necessary glue, so that the PURR can be wired up when we implement newer POWER CPU targets which include it. Signed-off-by: David Gibson --- target-ppc/helper.h | 1 + target-ppc/op_helper.c | 5 +++++ target-ppc/translate_init.c | 6 ++++++ 3 files changed, 12 insertions(+), 0 deletions(-) diff --git a/target-ppc/helper.h b/target-ppc/helper.h index 1a69cf8..4227897 100644 --- a/target-ppc/helper.h +++ b/target-ppc/helper.h @@ -371,6 +371,7 @@ DEF_HELPER_0(load_tbl, tl) DEF_HELPER_0(load_tbu, tl) DEF_HELPER_0(load_atbl, tl) DEF_HELPER_0(load_atbu, tl) +DEF_HELPER_0(load_purr, tl) DEF_HELPER_0(load_601_rtcl, tl) DEF_HELPER_0(load_601_rtcu, tl) #if !defined(CONFIG_USER_ONLY) diff --git a/target-ppc/op_helper.c b/target-ppc/op_helper.c index bdb1f17..b9b5ae2 100644 --- a/target-ppc/op_helper.c +++ b/target-ppc/op_helper.c @@ -86,6 +86,11 @@ target_ulong helper_load_atbu (void) return cpu_ppc_load_atbu(env); } +target_ulong helper_load_purr (void) +{ + return (target_ulong)cpu_ppc_load_purr(env); +} + target_ulong helper_load_601_rtcl (void) { return cpu_ppc601_load_rtcl(env); diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index dfcd949..c842330 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -209,6 +209,12 @@ static void spr_write_atbu (void *opaque, int sprn, int gprn) { gen_helper_store_atbu(cpu_gpr[gprn]); } + +__attribute__ (( unused )) +static void spr_read_purr(void *opaque, int gprn, int sprn) +{ + gen_helper_load_purr(cpu_gpr[gprn]); +} #endif #if !defined(CONFIG_USER_ONLY)