From patchwork Sat May 14 19:38:40 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Blue Swirl X-Patchwork-Id: 95578 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 60DF3B6EFE for ; Sun, 15 May 2011 05:39:27 +1000 (EST) Received: from localhost ([::1]:42483 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QLKgO-0005PP-Pg for incoming@patchwork.ozlabs.org; Sat, 14 May 2011 15:39:24 -0400 Received: from eggs.gnu.org ([140.186.70.92]:41348) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QLKg1-0005Kg-GP for qemu-devel@nongnu.org; Sat, 14 May 2011 15:39:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QLKg0-0002jv-Iq for qemu-devel@nongnu.org; Sat, 14 May 2011 15:39:01 -0400 Received: from mail-qy0-f180.google.com ([209.85.216.180]:36643) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QLKg0-0002jq-Ds for qemu-devel@nongnu.org; Sat, 14 May 2011 15:39:00 -0400 Received: by qyk10 with SMTP id 10so2072033qyk.4 for ; Sat, 14 May 2011 12:39:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:from:date:message-id:subject:to :content-type; bh=rv0xiVm6y7Y53/0Fv+oPZX+3NDA8viP1K1ii/V6S0+I=; b=nE+ZnoeUdEcxp+Rt0Z0tLK/LRJfJY+toAaOdZfxE9iyIR5mR3Jmaa6Ta9fMd3SeRm7 qk+3bcmSrzvI28FMH7gbb6PpyHPRoqLdpO68gN88z64dqwd8YogAMG7fWBSIw9YwUq61 fJLjn39UZgEZ6RVM85TGXTAcwP+qWCiPzhxtE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:content-type; b=rjts91b4gN5IfI6nEHFkjEIKVgMb91FBwfYjo0K6THRU6Xjj5iCwjTeCT9p87ftMga wtzeR/lfu7WJc52OhaLIC/ANLEPTER/CQ4wbbFgLNMQA4H2fjg8r7KZDM5OUyazS0r8m XHy6p5rV+DY8Q8sVY/rcPjWVqBLZ5R5maTiRU= Received: by 10.224.189.20 with SMTP id dc20mr1323978qab.287.1305401940093; Sat, 14 May 2011 12:39:00 -0700 (PDT) MIME-Version: 1.0 Received: by 10.224.54.148 with HTTP; Sat, 14 May 2011 12:38:40 -0700 (PDT) From: Blue Swirl Date: Sat, 14 May 2011 22:38:40 +0300 Message-ID: To: qemu-devel X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.216.180 Subject: [Qemu-devel] [PATCH 06/11] TCG/x86: 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 Use stack instead of temp_buf array in CPUState for TCG temps. Signed-off-by: Blue Swirl --- tcg/i386/tcg-target.c | 19 ++++++++++--------- 1 files changed, 10 insertions(+), 9 deletions(-) From ebc14537b3abd4a28360d25e42e3dbe1c9b2cb14 Mon Sep 17 00:00:00 2001 Message-Id: In-Reply-To: <6e21df8e369388a3152dcc7da30431c672e1ee37.1305401750.git.blauwirbel@gmail.com> References: <6e21df8e369388a3152dcc7da30431c672e1ee37.1305401750.git.blauwirbel@gmail.com> From: Blue Swirl Date: Sat, 14 May 2011 13:14:45 +0000 Subject: [PATCH 06/11] TCG/x86: use stack for TCG temps Use stack instead of temp_buf array in CPUState for TCG temps. Signed-off-by: Blue Swirl --- tcg/i386/tcg-target.c | 19 ++++++++++--------- 1 files changed, 10 insertions(+), 9 deletions(-) diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c index 01747f3..0e168ea 100644 --- a/tcg/i386/tcg-target.c +++ b/tcg/i386/tcg-target.c @@ -1918,19 +1918,22 @@ static void tcg_target_qemu_prologue(TCGContext *s) /* TB prologue */ - /* Save all callee saved registers. */ - for (i = 0; i < ARRAY_SIZE(tcg_target_callee_save_regs); i++) { - tcg_out_push(s, tcg_target_callee_save_regs[i]); - } - - /* Reserve some stack space. */ + /* Reserve some stack space, also for TCG temps. */ push_size = 1 + ARRAY_SIZE(tcg_target_callee_save_regs); push_size *= TCG_TARGET_REG_BITS / 8; - frame_size = push_size + TCG_STATIC_CALL_ARGS_SIZE; + frame_size = push_size + TCG_STATIC_CALL_ARGS_SIZE + + CPU_TEMP_BUF_NLONGS * sizeof(long); frame_size = (frame_size + TCG_TARGET_STACK_ALIGN - 1) & ~(TCG_TARGET_STACK_ALIGN - 1); stack_addend = frame_size - push_size; + tcg_set_frame(s, TCG_REG_ESP, 0, CPU_TEMP_BUF_NLONGS * sizeof(long)); + + /* Save all callee saved registers. */ + for (i = 0; i < ARRAY_SIZE(tcg_target_callee_save_regs); i++) { + tcg_out_push(s, tcg_target_callee_save_regs[i]); + } + tcg_out_addi(s, TCG_REG_ESP, -stack_addend); /* jmp *tb. */ @@ -1979,6 +1982,4 @@ static void tcg_target_init(TCGContext *s) tcg_regset_set_reg(s->reserved_regs, TCG_REG_ESP); tcg_add_target_add_op_defs(x86_op_defs); - tcg_set_frame(s, TCG_AREG0, offsetof(CPUState, temp_buf), - CPU_TEMP_BUF_NLONGS * sizeof(long)); } -- 1.7.2.5