From patchwork Tue Apr 23 15:38:50 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 162721 Delivered-To: patch@linaro.org Received: by 2002:a02:c6d8:0:0:0:0:0 with SMTP id r24csp3933954jan; Tue, 23 Apr 2019 08:44:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqxnkdtf9UpCwD7zaW2/mW1M8qBHdxrl3QwyLAfV1PaGLds7Xz9/GvzNUZ/4zUMEZDhnyFO2 X-Received: by 2002:a1c:c504:: with SMTP id v4mr2972932wmf.45.1556034246124; Tue, 23 Apr 2019 08:44:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556034246; cv=none; d=google.com; s=arc-20160816; b=U6ApfXOpwzsNL9kEmtXBvjXbcT9bwamDPAtbkDDar396YlicXY/ut+KDitra0Aw9EI KZV0+/3XF3WN7RckYCWbyHTRVZl3eDc8tXFJM06UIq9Ehcug1Jn/QpAejwTExOiSmY1I 7hNfIi4Q1MODCF9aroH7ccj78HWtkUv5uI4/fhawoW7DIWpKFKyY4ApDjxNS76iZOldA u3LAl015ZqPQxdAMTxUCyss36YttCE2P3CMMjh3qm7xiCI8Wk4b1Hn9kTAG4bhNORXiM 98hK4eU6uRlMqpNB7qJ8Blv/idae9/jeQLzBpRrR4kxiN8yES3yT2H9Q0M7yVmO9jWdN Wrzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=SJOqjegP+m673OZYoqgV5dWxHoBCuzthxG6rISUB5Lg=; b=HCSF9zvkMGoln0ONJ4IJrStFa3lG7qqEgHxTPdVZoTyeZSURwfXyacO88TSrJMOU/0 wXHhb0vd4yirIExHVodP7as7R2vr4d+UCF1UDWvuz1OzLkfIUxW19r4GLfchEcA7x/Y5 020ffL8RDATJkW7W3nQ9YLTtcVFQ/MzLibsIQPUGHvO4LtTbHq4H4tObKILGiGsi8JDq EVxCTGEE3tEMBqu4OeuwQ+8IhpUF5dhwVMggaEqoVo4EtpVQJwMnBW8nabqS7G8H3KDF X7bockIw/gihYSCzsER7gXnMdSadoOKqs0sPRg+aS6VLOES3F+8f9pqEQhDF94gd1dlh EjMA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="RPpjm/wD"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id x15si2477258wro.230.2019.04.23.08.44.05 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 23 Apr 2019 08:44:06 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="RPpjm/wD"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:55597 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hIxaX-0005Rq-4m for patch@linaro.org; Tue, 23 Apr 2019 11:44:05 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35513) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hIxVf-00019T-Se for qemu-devel@nongnu.org; Tue, 23 Apr 2019 11:39:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hIxVe-0006xb-Sj for qemu-devel@nongnu.org; Tue, 23 Apr 2019 11:39:03 -0400 Received: from mail-pg1-x542.google.com ([2607:f8b0:4864:20::542]:35419) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hIxVe-0006x7-Mg for qemu-devel@nongnu.org; Tue, 23 Apr 2019 11:39:02 -0400 Received: by mail-pg1-x542.google.com with SMTP id g8so7813247pgf.2 for ; Tue, 23 Apr 2019 08:39:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=SJOqjegP+m673OZYoqgV5dWxHoBCuzthxG6rISUB5Lg=; b=RPpjm/wD0KiSqAmeZRidiNQ2unSolGymuPUL2cu5ZhSf3IC2frP4SRK/K28ZUEpaDk cUXpM9e6nyjpgmn8CI2GNV4Uvm3fY8xSUJ/HcA/8kvxYJy4+0oh/p9qtNHwlbXW2EZX/ VmOEIwSXFsIn0sn0okF+unf2CihX0Boq/u/nRF2BUUDAzRvt1OmGVmXZOG41PdtdvOZL 9GH0X66Jmmy2RLF7tCdsC1G/aJojJIVapiBX3yl1FalfcaufBzatfU6eLlqnhVvCL2Go zdy4qwjol4trb433/cZuO9TVXQ8aWVxViLjBQS77lZZMgohjbaqvlNqe3j1yKfb3dQzB yc0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=SJOqjegP+m673OZYoqgV5dWxHoBCuzthxG6rISUB5Lg=; b=p/ZwD6DKjexsZwK5KOnjybGwjDZDVD2+Vp/n9e+/1nkultEem+8d9oiG9zmQORFjtN B6lg5I4nwnCjtZ34YBnm+7weO1V6/RYSqOkGxr9T3I0n1eO3LJV3pN3TvbCeL5envAOc SiKqKCsFC1dHHH38/rkxsWKZRxc008qYXtxfTEi06UHrOy4bhFJn110sK7NafaHcjkQ1 MJP7cHEuuV6XycuG2t5a5JyzJUxV7VEn1JlkI0QX5vjaxvRKQBKUC95WQIoVgBj100qw NbnHYWgQcOzV83+lJTad9ANWkm1LSGG/3JaAkS1mtH3CDulmKpN+IOxCk3Gn2CJTGtrl bojA== X-Gm-Message-State: APjAAAVsoZ/oA7Bv1G1vzd0Ez++A2THQ96FUDB3v3SMTXg0wns7NynX9 u+5znj+9EetvCbps186dZyGBI0+WTR8= X-Received: by 2002:a63:5a4b:: with SMTP id k11mr25055482pgm.119.1556033941333; Tue, 23 Apr 2019 08:39:01 -0700 (PDT) Received: from localhost.localdomain (97-113-179-147.tukw.qwest.net. [97.113.179.147]) by smtp.gmail.com with ESMTPSA id c25sm24366591pfo.69.2019.04.23.08.39.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 23 Apr 2019 08:39:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 23 Apr 2019 08:38:50 -0700 Message-Id: <20190423153853.19790-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190423153853.19790-1-richard.henderson@linaro.org> References: <20190423153853.19790-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::542 Subject: [Qemu-devel] [PATCH v2 4/7] tcg: Restart TB generation after constant pool overflow X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" This is part b of relocation overflow handling. Signed-off-by: Richard Henderson --- tcg/tcg-pool.inc.c | 12 +++++++----- tcg/tcg.c | 9 +++++---- 2 files changed, 12 insertions(+), 9 deletions(-) -- 2.17.1 diff --git a/tcg/tcg-pool.inc.c b/tcg/tcg-pool.inc.c index 7af5513ff3..4eaa84b631 100644 --- a/tcg/tcg-pool.inc.c +++ b/tcg/tcg-pool.inc.c @@ -121,14 +121,14 @@ static inline void new_pool_l8(TCGContext *s, int rtype, tcg_insn_unit *label, /* To be provided by cpu/tcg-target.inc.c. */ static void tcg_out_nop_fill(tcg_insn_unit *p, int count); -static bool tcg_out_pool_finalize(TCGContext *s) +static int tcg_out_pool_finalize(TCGContext *s) { TCGLabelPoolData *p = s->pool_labels; TCGLabelPoolData *l = NULL; void *a; if (p == NULL) { - return true; + return 0; } /* ??? Round up to qemu_icache_linesize, but then do not round @@ -142,15 +142,17 @@ static bool tcg_out_pool_finalize(TCGContext *s) size_t size = sizeof(tcg_target_ulong) * p->nlong; if (!l || l->nlong != p->nlong || memcmp(l->data, p->data, size)) { if (unlikely(a > s->code_gen_highwater)) { - return false; + return -1; } memcpy(a, p->data, size); a += size; l = p; } - patch_reloc(p->label, p->rtype, (intptr_t)a - size, p->addend); + if (!patch_reloc(p->label, p->rtype, (intptr_t)a - size, p->addend)) { + return -2; + } } s->code_ptr = a; - return true; + return 0; } diff --git a/tcg/tcg.c b/tcg/tcg.c index ab11235c42..50eb933efe 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -1018,8 +1018,8 @@ void tcg_prologue_init(TCGContext *s) #ifdef TCG_TARGET_NEED_POOL_LABELS /* Allow the prologue to put e.g. guest_base into a pool entry. */ { - bool ok = tcg_out_pool_finalize(s); - tcg_debug_assert(ok); + int result = tcg_out_pool_finalize(s); + tcg_debug_assert(result == 0); } #endif @@ -4000,8 +4000,9 @@ int tcg_gen_code(TCGContext *s, TranslationBlock *tb) } #endif #ifdef TCG_TARGET_NEED_POOL_LABELS - if (!tcg_out_pool_finalize(s)) { - return -1; + i = tcg_out_pool_finalize(s); + if (i < 0) { + return i; } #endif if (!tcg_resolve_relocs(s)) {