{"id":810783,"url":"http://patchwork.ozlabs.org/api/patches/810783/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/patch/1504729728-23279-2-git-send-email-cota@braap.org/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<1504729728-23279-2-git-send-email-cota@braap.org>","list_archive_url":null,"date":"2017-09-06T20:28:43","name":"[RFC,1/6] tcg: keep a pointer to the current TB in TCGContext","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"c01a825095b6e24e420b89889639b45e747453d1","submitter":{"id":65690,"url":"http://patchwork.ozlabs.org/api/people/65690/?format=json","name":"Emilio Cota","email":"cota@braap.org"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/patch/1504729728-23279-2-git-send-email-cota@braap.org/mbox/","series":[{"id":1871,"url":"http://patchwork.ozlabs.org/api/series/1871/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=1871","date":"2017-09-06T20:28:45","name":"initial plugin support","version":1,"mbox":"http://patchwork.ozlabs.org/series/1871/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/810783/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/810783/checks/","tags":{},"related":[],"headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=braap.org header.i=@braap.org\n\theader.b=\"btcYliQK\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=messagingengine.com\n\theader.i=@messagingengine.com header.b=\"QnBeaSxV\"; \n\tdkim-atps=neutral"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xnb0g1dtNz9t2c\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu,  7 Sep 2017 06:34:27 +1000 (AEST)","from localhost ([::1]:37687 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dph1l-0005mI-Ab\n\tfor incoming@patchwork.ozlabs.org; Wed, 06 Sep 2017 16:34:25 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:53493)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <cota@braap.org>) id 1dpgxU-0002Zo-BR\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 16:30:05 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <cota@braap.org>) id 1dpgxR-00013f-5c\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 16:30:00 -0400","from out1-smtp.messagingengine.com ([66.111.4.25]:41599)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <cota@braap.org>) id 1dpgxQ-00011q-VR\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 16:29:57 -0400","from compute4.internal (compute4.nyi.internal [10.202.2.44])\n\tby mailout.nyi.internal (Postfix) with ESMTP id 1E34A20B2E;\n\tWed,  6 Sep 2017 16:29:55 -0400 (EDT)","from frontend2 ([10.202.2.161])\n\tby compute4.internal (MEProxy); Wed, 06 Sep 2017 16:29:55 -0400","from localhost (flamenco.cs.columbia.edu [128.59.20.216])\n\tby mail.messagingengine.com (Postfix) with ESMTPA id CCF49240A4;\n\tWed,  6 Sep 2017 16:29:54 -0400 (EDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=braap.org; h=cc\n\t:date:from:in-reply-to:message-id:references:subject:to\n\t:x-me-sender:x-me-sender:x-sasl-enc:x-sasl-enc; s=mesmtp; bh=uIf\n\t9wyJY0a1xB9NEfA/yIJaXWVhupRaB6ow59U4DkJ4=; b=btcYliQKQlUNyulF/PM\n\tKsl25z107DGuMhf+D0fKVpmJ9rP/wksP/ECcLbMJ9LZuksiPE2K7wZ17cMEQxhsX\n\ttiB7LD55lDS1dihjOw87KUATv7JgAsegkrywUbcu6lHubxpUteMENEnQHNh3cn2w\n\tgSB8RAd8xqGKTYjVMccrAINc=","v=1; a=rsa-sha256; c=relaxed/relaxed; d=\n\tmessagingengine.com; h=cc:date:from:in-reply-to:message-id\n\t:references:subject:to:x-me-sender:x-me-sender:x-sasl-enc\n\t:x-sasl-enc; s=fm1; bh=uIf9wyJY0a1xB9NEfA/yIJaXWVhupRaB6ow59U4Dk\n\tJ4=; b=QnBeaSxVqZDvUeNPej0m0gwr65aDv616XuLyeoA9MwHGSg7vXwSFeGp9X\n\toxURzB0lRYFXDUpIVv72UTwziM2ScW+1cba9/Hl3XfF9qObcAk43ePxePU3mqBUU\n\tBx2TaiQt3JM2mdMxQqIjy6yiarJ8Z3KlXDZPBI0mEEDvsGGIH3EYKRuboA3MIP8F\n\tBMSn+hokAhVY2XRZTNrkKjtMg3N7/gSV7aXCishE20prKT4vydnVQeR8rAZZ0j5+\n\tkdn5Fn/t016qZcyRem0Oc48B2ARdOZWTt6g8aith/0GS6dnZnKnGX6ijEnOvGveZ\n\tHQ28UIisUzPNlZBztB6ZobJfnSPQg=="],"X-ME-Sender":"<xms:w1qwWXwuxMmAKUb_H2vcc9TaxP_gQ3y5gLk2fi7zHvz4VTio1tj8NQ>","X-Sasl-enc":"siU69U5WVz7GPr1InDXiOUOueonVQIisbKO7R20WO30e 1504729794","From":"\"Emilio G. Cota\" <cota@braap.org>","To":"qemu-devel@nongnu.org","Date":"Wed,  6 Sep 2017 16:28:43 -0400","Message-Id":"<1504729728-23279-2-git-send-email-cota@braap.org>","X-Mailer":"git-send-email 2.7.4","In-Reply-To":"<1504729728-23279-1-git-send-email-cota@braap.org>","References":"<1504729728-23279-1-git-send-email-cota@braap.org>","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"66.111.4.25","Subject":"[Qemu-devel] [RFC 1/6] tcg: keep a pointer to the current TB in\n\tTCGContext","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"=?utf-8?q?Llu=C3=ADs_Vilanova?= <vilanova@ac.upc.edu>,\n\tStefan Hajnoczi <stefanha@redhat.com>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"},"content":"Instead of just a copy of tb->cflags. This gives access in TCG\nto other fields in TB, which will be needed when we implement\ncallbacks from memory accesses performed by TCG-translated code.\n\nSigned-off-by: Emilio G. Cota <cota@braap.org>\n---\n tcg/tcg.h                 |  2 +-\n accel/tcg/translate-all.c |  3 ++-\n tcg/tcg-op.c              | 10 +++++-----\n 3 files changed, 8 insertions(+), 7 deletions(-)","diff":"diff --git a/tcg/tcg.h b/tcg/tcg.h\nindex cf4eeaf..86ca604 100644\n--- a/tcg/tcg.h\n+++ b/tcg/tcg.h\n@@ -676,7 +676,7 @@ struct TCGContext {\n     uintptr_t *tb_jmp_target_addr; /* tb->jmp_target_addr if !USE_DIRECT_JUMP */\n \n     TCGRegSet reserved_regs;\n-    uint32_t tb_cflags; /* cflags of the current TB */\n+    const TranslationBlock *tb;\n     intptr_t current_frame_offset;\n     intptr_t frame_start;\n     intptr_t frame_end;\ndiff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c\nindex 69cc7dc..7332afc 100644\n--- a/accel/tcg/translate-all.c\n+++ b/accel/tcg/translate-all.c\n@@ -1600,7 +1600,6 @@ TranslationBlock *tb_gen_code(CPUState *cpu,\n     tb->flags = flags;\n     tb->cflags = cflags;\n     tb->trace_vcpu_dstate = *cpu->trace_dstate;\n-    tcg_ctx->tb_cflags = cflags;\n \n #ifdef CONFIG_PROFILER\n     /* includes aborted translations because of exceptions */\n@@ -1610,9 +1609,11 @@ TranslationBlock *tb_gen_code(CPUState *cpu,\n \n     tcg_func_start(tcg_ctx);\n \n+    tcg_ctx->tb = tb;\n     tcg_ctx->cpu = ENV_GET_CPU(env);\n     gen_intermediate_code(cpu, tb);\n     tcg_ctx->cpu = NULL;\n+    tcg_ctx->tb = NULL;\n \n     trace_translate_block(tb, tb->pc, tb->tc.ptr);\n \ndiff --git a/tcg/tcg-op.c b/tcg/tcg-op.c\nindex 2a8bf90..32449d2 100644\n--- a/tcg/tcg-op.c\n+++ b/tcg/tcg-op.c\n@@ -150,7 +150,7 @@ void tcg_gen_op6(TCGContext *ctx, TCGOpcode opc, TCGArg a1, TCGArg a2,\n \n void tcg_gen_mb(TCGBar mb_type)\n {\n-    if (tcg_ctx->tb_cflags & CF_PARALLEL) {\n+    if (tb_cflags(tcg_ctx->tb) & CF_PARALLEL) {\n         tcg_gen_op1(tcg_ctx, INDEX_op_mb, mb_type);\n     }\n }\n@@ -2794,7 +2794,7 @@ void tcg_gen_atomic_cmpxchg_i32(TCGv_i32 retv, TCGv addr, TCGv_i32 cmpv,\n {\n     memop = tcg_canonicalize_memop(memop, 0, 0);\n \n-    if (!(tcg_ctx->tb_cflags & CF_PARALLEL)) {\n+    if (!(tb_cflags(tcg_ctx->tb) & CF_PARALLEL)) {\n         TCGv_i32 t1 = tcg_temp_new_i32();\n         TCGv_i32 t2 = tcg_temp_new_i32();\n \n@@ -2838,7 +2838,7 @@ void tcg_gen_atomic_cmpxchg_i64(TCGv_i64 retv, TCGv addr, TCGv_i64 cmpv,\n {\n     memop = tcg_canonicalize_memop(memop, 1, 0);\n \n-    if (!(tcg_ctx->tb_cflags & CF_PARALLEL)) {\n+    if (!(tb_cflags(tcg_ctx->tb) & CF_PARALLEL)) {\n         TCGv_i64 t1 = tcg_temp_new_i64();\n         TCGv_i64 t2 = tcg_temp_new_i64();\n \n@@ -3015,7 +3015,7 @@ static void * const table_##NAME[16] = {                                \\\n void tcg_gen_atomic_##NAME##_i32                                        \\\n     (TCGv_i32 ret, TCGv addr, TCGv_i32 val, TCGArg idx, TCGMemOp memop) \\\n {                                                                       \\\n-    if (tcg_ctx->tb_cflags & CF_PARALLEL) {                             \\\n+    if (tb_cflags(tcg_ctx->tb) & CF_PARALLEL) {                         \\\n         do_atomic_op_i32(ret, addr, val, idx, memop, table_##NAME);     \\\n     } else {                                                            \\\n         do_nonatomic_op_i32(ret, addr, val, idx, memop, NEW,            \\\n@@ -3025,7 +3025,7 @@ void tcg_gen_atomic_##NAME##_i32                                        \\\n void tcg_gen_atomic_##NAME##_i64                                        \\\n     (TCGv_i64 ret, TCGv addr, TCGv_i64 val, TCGArg idx, TCGMemOp memop) \\\n {                                                                       \\\n-    if (tcg_ctx->tb_cflags & CF_PARALLEL) {                             \\\n+    if (tb_cflags(tcg_ctx->tb) & CF_PARALLEL) {                         \\\n         do_atomic_op_i64(ret, addr, val, idx, memop, table_##NAME);     \\\n     } else {                                                            \\\n         do_nonatomic_op_i64(ret, addr, val, idx, memop, NEW,            \\\n","prefixes":["RFC","1/6"]}