From patchwork Wed Jun 22 10:58:25 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 101432 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 EA4BDB6FE5 for ; Wed, 22 Jun 2011 21:00:41 +1000 (EST) Received: from localhost ([::1]:38193 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QZLAf-0007fv-6t for incoming@patchwork.ozlabs.org; Wed, 22 Jun 2011 07:00:33 -0400 Received: from eggs.gnu.org ([140.186.70.92]:36118) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QZL8l-0007fp-0f for qemu-devel@nongnu.org; Wed, 22 Jun 2011 06:58:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QZL8k-0001k2-2i for qemu-devel@nongnu.org; Wed, 22 Jun 2011 06:58:34 -0400 Received: from mnementh.archaic.org.uk ([81.2.115.146]:55424) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QZL8j-0001jZ-Pu for qemu-devel@nongnu.org; Wed, 22 Jun 2011 06:58:33 -0400 Received: from pm215 by mnementh.archaic.org.uk with local (Exim 4.72) (envelope-from ) id 1QZL8b-0004ar-Cf; Wed, 22 Jun 2011 11:58:25 +0100 From: Peter Maydell To: qemu-devel@nongnu.org Date: Wed, 22 Jun 2011 11:58:25 +0100 Message-Id: <1308740305-17634-1-git-send-email-peter.maydell@linaro.org> X-Mailer: git-send-email 1.7.2.5 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 81.2.115.146 Cc: patches@linaro.org Subject: [Qemu-devel] [PATCH] exec.c: Fix calculation of code_gen_buffer_max_size 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 When calculating the point at which we should not try to put another TB into the code gen buffer, we have to allow not just for OPC_MAX_SIZE but OPC_BUF_SIZE. This is because the target translate.c will only stop when an instruction has put it past the OPC_MAX_SIZE limit, so we have to include the MAX_OP_PER_INSTR margin which that final insn might have used. Signed-off-by: Peter Maydell --- exec.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/exec.c b/exec.c index 09928a3..c910840 100644 --- a/exec.c +++ b/exec.c @@ -555,8 +555,8 @@ static void code_gen_alloc(unsigned long tb_size) #endif #endif /* !USE_STATIC_CODE_GEN_BUFFER */ map_exec(code_gen_prologue, sizeof(code_gen_prologue)); - code_gen_buffer_max_size = code_gen_buffer_size - - (TCG_MAX_OP_SIZE * OPC_MAX_SIZE); + code_gen_buffer_max_size = code_gen_buffer_size - + (TCG_MAX_OP_SIZE * OPC_BUF_SIZE); code_gen_max_blocks = code_gen_buffer_size / CODE_GEN_AVG_BLOCK_SIZE; tbs = qemu_malloc(code_gen_max_blocks * sizeof(TranslationBlock)); }