From nobody Mon Feb 9 16:12:44 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493294531105657.5858758709404; Thu, 27 Apr 2017 05:02:11 -0700 (PDT) Received: from localhost ([::1]:60204 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3i7c-00057z-KJ for importer@patchew.org; Thu, 27 Apr 2017 08:02:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52130) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3i5t-0003tU-Gp for qemu-devel@nongnu.org; Thu, 27 Apr 2017 08:00:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d3i5s-0001QC-Na for qemu-devel@nongnu.org; Thu, 27 Apr 2017 08:00:21 -0400 Received: from mail-wr0-x242.google.com ([2a00:1450:400c:c0c::242]:33410) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d3i5s-0001Pa-Gm for qemu-devel@nongnu.org; Thu, 27 Apr 2017 08:00:20 -0400 Received: by mail-wr0-x242.google.com with SMTP id w50so3540002wrc.0 for ; Thu, 27 Apr 2017 05:00:20 -0700 (PDT) Received: from bigtime.twiddle.net.com (251.red-80-29-7.adsl.static.ccgg.telefonica.net. [80.29.7.251]) by smtp.gmail.com with ESMTPSA id i199sm3056470wmf.33.2017.04.27.05.00.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 27 Apr 2017 05:00:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Q+oN2BnzGhA/aEQvXgKe4onnFwQsDRpheeO5aPPc5tk=; b=O/UWjmQqoPxpofuBerUe8kWjQ5HIbikTwGxG4dok1sEgqqJUmvyau+c498u+HVlsAQ IF8XiVuSejppkymI5Yu2iakQ8Zm91f0++rWocS3/GT2glNjN5ZeZdR+DqswXLMKKUxrT tQoBsTrdTnZjbQZO1JNhJagY12UgEvmh6/toZDRrQ6vEBp4uw78DWqp32kuNLWBh6QN2 jqmnZaCtUgOj//XwXRZBRT7z3ZjQO7MF/QdYyW9JaRXheTAWIRI5V2z+/1wVApF6BlgE kDUQNwykoiIN/Q9L3wh5lrPJ8cA4XkOzBFtzyYRHcu8UKa3kDH2hjGy6bzTdIZkP9hjG vghA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=Q+oN2BnzGhA/aEQvXgKe4onnFwQsDRpheeO5aPPc5tk=; b=HZ5bdt4zIqIKMCy26AhSkO3PaumZX7hUCwbf5OFQGy5bwjzInYUAmLSkselFEpV6cK O3kYAG0ti3ok3CX9pJYQIQCx+gI5+gau8fS1b3mKPf3aJpLvAuaul2r0/a9LOqtLQH00 bCgkOCvlyFdO3s+KdI7xD9wkl8SmRwUrWULsHnlJLnhnjoAnnnTgYs1UXWbjtyktTjVA UJDd2uh4yFV+QxRNeDgQgL3h5kVcX8CR/NileUij5YDamHuNQXY39ge+Lsjg5bHcXEPk QjHIHpSAO5o6CDACMp8Jk4DU+dd+rFI0ZcDIT35XTIjDc3eK2X5ycRQK+P3kQAL/HyAe MmOw== X-Gm-Message-State: AN3rC/7c/7izQEO3aSAnF4MORw6E73vbjRTsaDkCtvAT1O6yEoL5zSLF Vs5HpolfoLClLA== X-Received: by 10.223.168.120 with SMTP id l111mr3159832wrc.137.1493294419361; Thu, 27 Apr 2017 05:00:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Thu, 27 Apr 2017 13:59:52 +0200 Message-Id: <20170427120006.20564-6-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170427120006.20564-1-rth@twiddle.net> References: <20170427120006.20564-1-rth@twiddle.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::242 Subject: [Qemu-devel] [PATCH v5 05/19] tcg-runtime: add lookup_tb_ptr helper 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: cota@braap.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 From: "Emilio G. Cota" This paves the way for upcoming work. Reviewed-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Emilio G. Cota Message-Id: <1493263764-18657-3-git-send-email-cota@braap.org> Signed-off-by: Richard Henderson --- tcg-runtime.c | 24 ++++++++++++++++++++++++ tcg/tcg-runtime.h | 2 ++ tcg/tcg.h | 1 + 3 files changed, 27 insertions(+) diff --git a/tcg-runtime.c b/tcg-runtime.c index 4c60c96..8a24bdd 100644 --- a/tcg-runtime.c +++ b/tcg-runtime.c @@ -27,6 +27,7 @@ #include "exec/helper-proto.h" #include "exec/cpu_ldst.h" #include "exec/exec-all.h" +#include "exec/tb-hash.h" =20 /* 32-bit helpers */ =20 @@ -141,6 +142,29 @@ uint64_t HELPER(ctpop_i64)(uint64_t arg) return ctpop64(arg); } =20 +void *HELPER(lookup_tb_ptr)(CPUArchState *env, target_ulong addr) +{ + CPUState *cpu =3D ENV_GET_CPU(env); + TranslationBlock *tb; + target_ulong cs_base, pc; + uint32_t flags; + + tb =3D atomic_rcu_read(&cpu->tb_jmp_cache[tb_jmp_cache_hash_func(addr)= ]); + if (likely(tb)) { + cpu_get_tb_cpu_state(env, &pc, &cs_base, &flags); + if (likely(tb->pc =3D=3D addr && tb->cs_base =3D=3D cs_base && + tb->flags =3D=3D flags)) { + return tb->tc_ptr; + } + tb =3D tb_htable_lookup(cpu, pc, cs_base, flags); + if (likely(tb)) { + atomic_set(&cpu->tb_jmp_cache[tb_jmp_cache_hash_func(addr)], t= b); + return tb->tc_ptr; + } + } + return tcg_ctx.code_gen_epilogue; +} + void HELPER(exit_atomic)(CPUArchState *env) { cpu_loop_exit_atomic(ENV_GET_CPU(env), GETPC()); diff --git a/tcg/tcg-runtime.h b/tcg/tcg-runtime.h index 114ea6f..c41d38a 100644 --- a/tcg/tcg-runtime.h +++ b/tcg/tcg-runtime.h @@ -24,6 +24,8 @@ DEF_HELPER_FLAGS_1(clrsb_i64, TCG_CALL_NO_RWG_SE, i64, i6= 4) DEF_HELPER_FLAGS_1(ctpop_i32, TCG_CALL_NO_RWG_SE, i32, i32) DEF_HELPER_FLAGS_1(ctpop_i64, TCG_CALL_NO_RWG_SE, i64, i64) =20 +DEF_HELPER_FLAGS_2(lookup_tb_ptr, TCG_CALL_NO_WG_SE, ptr, env, tl) + DEF_HELPER_FLAGS_1(exit_atomic, TCG_CALL_NO_WG, noreturn, env) =20 #ifdef CONFIG_SOFTMMU diff --git a/tcg/tcg.h b/tcg/tcg.h index 6c216bb..5ec48d1 100644 --- a/tcg/tcg.h +++ b/tcg/tcg.h @@ -699,6 +699,7 @@ struct TCGContext { extension that allows arithmetic on void*. */ int code_gen_max_blocks; void *code_gen_prologue; + void *code_gen_epilogue; void *code_gen_buffer; size_t code_gen_buffer_size; void *code_gen_ptr; --=20 2.9.3