From patchwork Mon Jun 20 22:10:18 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 101216 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id D9825B6F84 for ; Tue, 21 Jun 2011 08:13:53 +1000 (EST) Received: from localhost ([::1]:58562 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QYmj7-0005Pe-FX for incoming@patchwork.ozlabs.org; Mon, 20 Jun 2011 18:13:49 -0400 Received: from eggs.gnu.org ([140.186.70.92]:43088) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QYmg8-0005P6-D6 for qemu-devel@nongnu.org; Mon, 20 Jun 2011 18:10:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QYmg6-0002EU-VN for qemu-devel@nongnu.org; Mon, 20 Jun 2011 18:10:44 -0400 Received: from mail-qw0-f45.google.com ([209.85.216.45]:45212) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QYmg6-0002EL-NR for qemu-devel@nongnu.org; Mon, 20 Jun 2011 18:10:42 -0400 Received: by qwj8 with SMTP id 8so961753qwj.4 for ; Mon, 20 Jun 2011 15:10:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:sender:message-id:date:from:user-agent :mime-version:to:cc:subject:references:in-reply-to:content-type :content-transfer-encoding; bh=AeCMH14EBL5qhOrCaNmnn+S9Oq5zTnWaJutUQsClAQE=; b=HL2mkaCq+o/RnCAM2oK94NCFDBqd5hFZgs7sKs8LeltMWeksBkP21gjtI33a+sAbi2 4BQNvrE0YTW9Yqo6azf+YtSwKBCPJBCdGvOuW7+VVHmhRSle4qb7b1LTR/zAKxBL0l+E odtddzt6jJQhqIQy8m04N9OkN7O+JDOtSRerI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; b=Wl2YX8DR7Sn0idHXlQCcYgPDBq/lA7NGMPQgLYKQMmZMyYyq8Damis5eiPPgVXTk3Z DbZgTqe95UDUUai4/do1gVkTR2Xbl23jetMLb9pt9ZAOlVp/GA4zGBWOm5q/N5qX61tx B5VE6hdM0h6Quw2e05Ulaj4Jaav7djfcNT45k= Received: by 10.224.9.65 with SMTP id k1mr10849qak.4.1308607841964; Mon, 20 Jun 2011 15:10:41 -0700 (PDT) Received: from pebble.twiddle.home (c-71-227-161-214.hsd1.wa.comcast.net [71.227.161.214]) by mx.google.com with ESMTPS id e18sm3483140qcs.17.2011.06.20.15.10.40 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 20 Jun 2011 15:10:41 -0700 (PDT) Message-ID: <4DFFC54A.6060007@twiddle.net> Date: Mon, 20 Jun 2011 15:10:18 -0700 From: Richard Henderson User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc14 Thunderbird/3.1.10 MIME-Version: 1.0 To: Blue Swirl References: In-Reply-To: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.216.45 Cc: qemu-devel Subject: Re: [Qemu-devel] [PATCH 09/18] TCG/HPPA: use stack for TCG temps X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org On 06/19/2011 02:05 PM, Blue Swirl wrote: > Use stack instead of temp_buf array in CPUState for TCG temps. > > Signed-off-by: Blue Swirl > --- > tcg/hppa/tcg-target.c | 7 +++++-- > 1 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c > index bd40954..b900c88 100644 > --- a/tcg/hppa/tcg-target.c > +++ b/tcg/hppa/tcg-target.c > @@ -1612,6 +1612,11 @@ static void tcg_target_qemu_prologue(TCGContext *s) > /* Allocate space for the saved registers. */ > frame_size += ARRAY_SIZE(tcg_target_callee_save_regs) * 4; > > + /* Use the space here for the TCG temps. */ > + tcg_set_frame(s, TCG_REG_CALL_STACK, frame_size, > + CPU_TEMP_BUF_NLONGS * sizeof(long)); PA-RISC is a stack-grows-up machine. You've placed the buffer above the stack pointer, and thus outside the frame. I've tested the following, presented as a diff against your patch set because that was easiest after having checked out your git tree. r~ ----->8----->8----->8----->8----->8----->8 From: Richard Henderson Date: Mon, 20 Jun 2011 23:24:43 +0200 Subject: [PATCH] tcg-hppa: Put the tcg save area at the right spot in the frame. Signed-off-by: Richard Henderson --- tcg/hppa/tcg-target.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c index 7dac3f5..95f3316 100644 --- a/tcg/hppa/tcg-target.c +++ b/tcg/hppa/tcg-target.c @@ -1612,9 +1612,7 @@ static void tcg_target_qemu_prologue(TCGContext *s) /* Allocate space for the saved registers. */ frame_size += ARRAY_SIZE(tcg_target_callee_save_regs) * 4; - /* Use the space here for the TCG temps. */ - tcg_set_frame(s, TCG_REG_CALL_STACK, frame_size, - TCG_TEMP_BUF_NLONGS * sizeof(long)); + /* Allocate space for the TCG temps. */ frame_size += TCG_TEMP_BUF_NLONGS * sizeof(long); /* Align the allocated space. */ @@ -1634,6 +1632,10 @@ static void tcg_target_qemu_prologue(TCGContext *s) TCG_REG_CALL_STACK, -frame_size + i * 4); } + /* Record the location of the TCG temps. */ + tcg_set_frame(s, TCG_REG_CALL_STACK, -frame_size + i * 4, + TCG_TEMP_BUF_NLONGS * sizeof(long)); + #ifdef CONFIG_USE_GUEST_BASE if (GUEST_BASE != 0) { tcg_out_movi(s, TCG_TYPE_PTR, TCG_GUEST_BASE_REG, GUEST_BASE);