From patchwork Tue Jun 1 20:12:48 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Igor V. Kovalenko" X-Patchwork-Id: 54299 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 37631B7D30 for ; Wed, 2 Jun 2010 06:21:42 +1000 (EST) Received: from localhost ([127.0.0.1]:38317 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OJXxw-0006i3-Ul for incoming@patchwork.ozlabs.org; Tue, 01 Jun 2010 16:21:37 -0400 Received: from [140.186.70.92] (port=33139 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OJXpT-0000ml-Jt for qemu-devel@nongnu.org; Tue, 01 Jun 2010 16:12:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OJXpR-0006Ts-W0 for qemu-devel@nongnu.org; Tue, 01 Jun 2010 16:12:51 -0400 Received: from mail-fx0-f45.google.com ([209.85.161.45]:34677) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OJXpR-0006Nu-Qr for qemu-devel@nongnu.org; Tue, 01 Jun 2010 16:12:49 -0400 Received: by mail-fx0-f45.google.com with SMTP id 17so4227877fxm.4 for ; Tue, 01 Jun 2010 13:12:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:received:subject:to:from:date :message-id:in-reply-to:references:user-agent:mime-version :content-type:content-transfer-encoding; bh=/03l1Kj3Ok273hANr6PCzEql/wCpt4yr9N674u1Iszo=; b=g7lfw8xS1nWl5k+agnCGrUdrkTcqS6yjfK3qc4pDRZpyPWmGOzwiFlVCZFPU4TbEJE jrB/6gKiCC0m1z5jG23qp67RKnOGrs1N4WiYFDR9u8eyLrxKWNOlrZuiM9J28EsAAYlx 08Wwbmj+Bs3uAWZrqtGNUJ0VQFyzJJ0QUkrN0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=subject:to:from:date:message-id:in-reply-to:references:user-agent :mime-version:content-type:content-transfer-encoding; b=K/LH6ehGbDKuotUpQMb3ZWjcTD4AUI58zXDjGnWXCtqLK0WRkCDdeVIlR588SwfGmD fmgTrXxstNTtunuu/+8LppJsuHGPMvyxwQv8ahVIbwPspGAiUNEumPufI6gUZX70j6ls UfoWnezoBN0Ov3x5rdXYCZeIAiwHbwzVruHz8= Received: by 10.223.23.83 with SMTP id q19mr7670137fab.12.1275423169477; Tue, 01 Jun 2010 13:12:49 -0700 (PDT) Received: from skyserv ([87.255.14.75]) by mx.google.com with ESMTPS id r25sm48619474fai.23.2010.06.01.13.12.48 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 01 Jun 2010 13:12:49 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=[192.168.1.2]) by skyserv with esmtp (Exim 4.71) (envelope-from ) id 1OJXpQ-0001cT-1f for qemu-devel@nongnu.org; Wed, 02 Jun 2010 00:12:48 +0400 To: qemu-devel@nongnu.org From: "Igor V. Kovalenko" Date: Wed, 02 Jun 2010 00:12:48 +0400 Message-ID: <20100601201247.5908.75284.stgit@skyserv> In-Reply-To: <20100601200434.5908.19495.stgit@skyserv> References: <20100601200434.5908.19495.stgit@skyserv> User-Agent: StGit/0.15 MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) Subject: [Qemu-devel] [PATCH 6/8] sparc64: improve ldf and stf insns 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: Igor V. Kovalenko - implemented block load/store primary/secondary with user privilege Signed-off-by: Igor V. Kovalenko --- target-sparc/op_helper.c | 28 ++++++++++++++++++++++++++++ 1 files changed, 28 insertions(+), 0 deletions(-) diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c index b9af52b..83067ae 100644 --- a/target-sparc/op_helper.c +++ b/target-sparc/op_helper.c @@ -3161,6 +3161,20 @@ void helper_ldf_asi(target_ulong addr, int asi, int size, int rd) } return; + case 0x70: // Block load primary, user privilege + case 0x71: // Block load secondary, user privilege + if (rd & 7) { + raise_exception(TT_ILL_INSN); + return; + } + helper_check_align(addr, 0x3f); + for (i = 0; i < 16; i++) { + *(uint32_t *)&env->fpr[rd++] = helper_ld_asi(addr, asi & 0x1f, 4, + 0); + addr += 4; + } + + return; default: break; } @@ -3211,6 +3225,20 @@ void helper_stf_asi(target_ulong addr, int asi, int size, int rd) } return; + case 0x70: // Block store primary, user privilege + case 0x71: // Block store secondary, user privilege + if (rd & 7) { + raise_exception(TT_ILL_INSN); + return; + } + helper_check_align(addr, 0x3f); + for (i = 0; i < 16; i++) { + val = *(uint32_t *)&env->fpr[rd++]; + helper_st_asi(addr, val, asi & 0x1f, 4); + addr += 4; + } + + return; default: break; }