From: "Alex Bennée" <alex.bennee@linaro.org>
To: "Emilio G. Cota" <cota@braap.org>
Cc: qemu-devel@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,
Peter Crosthwaite <crosthwaite.peter@gmail.com>,
Richard Henderson <rth@twiddle.net>,
Peter Maydell <peter.maydell@linaro.org>,
Eduardo Habkost <ehabkost@redhat.com>,
Andrzej Zaborowski <balrogg@gmail.com>,
Aurelien Jarno <aurelien@aurel32.net>,
Alexander Graf <agraf@suse.de>, Stefan Weil <sw@weilnetz.de>,
qemu-arm@nongnu.org, Pranith Kumar <bobby.prani+qemu@gmail.com>
Subject: Re: [PATCH v3 01/10] tcg-runtime: add lookup_tb_ptr helper
Date: Wed, 26 Apr 2017 11:29:29 +0100 [thread overview]
Message-ID: <87efwf8nsm.fsf@linaro.org> (raw)
In-Reply-To: <1493187803-4510-2-git-send-email-cota@braap.org>
Emilio G. Cota <cota@braap.org> writes:
> This paves the way for upcoming work.
>
> Reviewed-by: Richard Henderson <rth@twiddle.net>
> Signed-off-by: Emilio G. Cota <cota@braap.org>
> ---
> tcg-runtime.c | 21 +++++++++++++++++++++
> tcg/tcg-runtime.h | 2 ++
> tcg/tcg.h | 1 +
> 3 files changed, 24 insertions(+)
>
> diff --git a/tcg-runtime.c b/tcg-runtime.c
> index 4c60c96..90d2d4b 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"
>
> /* 32-bit helpers */
>
> @@ -141,6 +142,26 @@ uint64_t HELPER(ctpop_i64)(uint64_t arg)
> return ctpop64(arg);
> }
>
> +void *HELPER(lookup_tb_ptr)(CPUArchState *env, target_ulong addr)
> +{
> + CPUState *cpu = ENV_GET_CPU(env);
> + TranslationBlock *tb;
> + target_ulong cs_base, pc;
> + uint32_t flags;
> +
> + if (unlikely(atomic_read(&cpu->exit_request))) {
> + goto out_epilogue;
> + }
> + cpu_get_tb_cpu_state(env, &pc, &cs_base, &flags);
> + tb = atomic_rcu_read(&cpu->tb_jmp_cache[tb_jmp_cache_hash_func(addr)]);
> + if (likely(tb && tb->pc == addr && tb->cs_base == cs_base &&
> + tb->flags == flags)) {
Should we also not be checking the TB hasn't been invalidated: tb->invalid?
> + return tb->tc_ptr;
> + }
> + out_epilogue:
> + 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, i64)
> 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)
>
> +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)
>
> #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;
--
Alex Bennée
WARNING: multiple messages have this Message-ID (diff)
From: "Alex Bennée" <alex.bennee@linaro.org>
To: "Emilio G. Cota" <cota@braap.org>
Cc: qemu-devel@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,
Peter Crosthwaite <crosthwaite.peter@gmail.com>,
Richard Henderson <rth@twiddle.net>,
Peter Maydell <peter.maydell@linaro.org>,
Eduardo Habkost <ehabkost@redhat.com>,
Andrzej Zaborowski <balrogg@gmail.com>,
Aurelien Jarno <aurelien@aurel32.net>,
Alexander Graf <agraf@suse.de>, Stefan Weil <sw@weilnetz.de>,
qemu-arm@nongnu.org, Pranith Kumar <bobby.prani+qemu@gmail.com>
Subject: Re: [Qemu-devel] [PATCH v3 01/10] tcg-runtime: add lookup_tb_ptr helper
Date: Wed, 26 Apr 2017 11:29:29 +0100 [thread overview]
Message-ID: <87efwf8nsm.fsf@linaro.org> (raw)
In-Reply-To: <1493187803-4510-2-git-send-email-cota@braap.org>
Emilio G. Cota <cota@braap.org> writes:
> This paves the way for upcoming work.
>
> Reviewed-by: Richard Henderson <rth@twiddle.net>
> Signed-off-by: Emilio G. Cota <cota@braap.org>
> ---
> tcg-runtime.c | 21 +++++++++++++++++++++
> tcg/tcg-runtime.h | 2 ++
> tcg/tcg.h | 1 +
> 3 files changed, 24 insertions(+)
>
> diff --git a/tcg-runtime.c b/tcg-runtime.c
> index 4c60c96..90d2d4b 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"
>
> /* 32-bit helpers */
>
> @@ -141,6 +142,26 @@ uint64_t HELPER(ctpop_i64)(uint64_t arg)
> return ctpop64(arg);
> }
>
> +void *HELPER(lookup_tb_ptr)(CPUArchState *env, target_ulong addr)
> +{
> + CPUState *cpu = ENV_GET_CPU(env);
> + TranslationBlock *tb;
> + target_ulong cs_base, pc;
> + uint32_t flags;
> +
> + if (unlikely(atomic_read(&cpu->exit_request))) {
> + goto out_epilogue;
> + }
> + cpu_get_tb_cpu_state(env, &pc, &cs_base, &flags);
> + tb = atomic_rcu_read(&cpu->tb_jmp_cache[tb_jmp_cache_hash_func(addr)]);
> + if (likely(tb && tb->pc == addr && tb->cs_base == cs_base &&
> + tb->flags == flags)) {
Should we also not be checking the TB hasn't been invalidated: tb->invalid?
> + return tb->tc_ptr;
> + }
> + out_epilogue:
> + 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, i64)
> 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)
>
> +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)
>
> #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;
--
Alex Bennée
next prev parent reply other threads:[~2017-04-26 10:29 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-26 6:23 [PATCH v3 00/10] TCG optimizations for 2.10 Emilio G. Cota
2017-04-26 6:23 ` [Qemu-devel] " Emilio G. Cota
2017-04-26 6:23 ` [PATCH v3 01/10] tcg-runtime: add lookup_tb_ptr helper Emilio G. Cota
2017-04-26 6:23 ` [Qemu-devel] " Emilio G. Cota
2017-04-26 7:50 ` Paolo Bonzini
2017-04-26 7:50 ` [Qemu-devel] " Paolo Bonzini
2017-04-26 8:40 ` Richard Henderson
2017-04-26 8:40 ` [Qemu-devel] " Richard Henderson
2017-04-26 21:56 ` Emilio G. Cota
2017-04-26 21:56 ` [Qemu-devel] " Emilio G. Cota
2017-04-26 22:29 ` Richard Henderson
2017-04-26 22:29 ` [Qemu-devel] " Richard Henderson
2017-04-26 22:45 ` Emilio G. Cota
2017-04-26 22:45 ` [Qemu-devel] " Emilio G. Cota
2017-04-26 23:11 ` Emilio G. Cota
2017-04-26 23:11 ` [Qemu-devel] " Emilio G. Cota
2017-04-26 23:25 ` Emilio G. Cota
2017-04-26 23:25 ` [Qemu-devel] " Emilio G. Cota
2017-04-26 23:17 ` Emilio G. Cota
2017-04-26 23:17 ` [Qemu-devel] " Emilio G. Cota
2017-04-26 10:29 ` Alex Bennée [this message]
2017-04-26 10:29 ` Alex Bennée
2017-04-26 10:43 ` Richard Henderson
2017-04-26 10:43 ` [Qemu-devel] " Richard Henderson
2017-04-26 15:11 ` Paolo Bonzini
2017-04-26 15:11 ` [Qemu-devel] " Paolo Bonzini
2017-04-26 16:16 ` Alex Bennée
2017-04-26 16:16 ` [Qemu-devel] " Alex Bennée
2017-04-26 6:23 ` [PATCH v3 02/10] tcg: introduce goto_ptr opcode Emilio G. Cota
2017-04-26 6:23 ` [Qemu-devel] " Emilio G. Cota
2017-04-26 8:30 ` Richard Henderson
2017-04-26 8:30 ` [Qemu-devel] " Richard Henderson
2017-04-26 12:12 ` Richard Henderson
2017-04-26 12:12 ` [Qemu-devel] " Richard Henderson
2017-04-26 6:23 ` [PATCH v3 03/10] tcg: export tcg_gen_lookup_and_goto_ptr Emilio G. Cota
2017-04-26 6:23 ` [Qemu-devel] " Emilio G. Cota
2017-04-26 8:29 ` Richard Henderson
2017-04-26 8:29 ` [Qemu-devel] " Richard Henderson
2017-04-26 10:33 ` Alex Bennée
2017-04-26 10:33 ` [Qemu-devel] " Alex Bennée
2017-04-26 6:23 ` [PATCH v3 04/10] tcg/i386: implement goto_ptr op Emilio G. Cota
2017-04-26 6:23 ` [Qemu-devel] " Emilio G. Cota
2017-04-26 8:28 ` Richard Henderson
2017-04-26 8:28 ` [Qemu-devel] " Richard Henderson
2017-04-26 6:23 ` [PATCH v3 05/10] target/arm: optimize cross-page direct jumps in softmmu Emilio G. Cota
2017-04-26 6:23 ` [Qemu-devel] " Emilio G. Cota
2017-04-26 8:27 ` Richard Henderson
2017-04-26 8:27 ` [Qemu-devel] " Richard Henderson
2017-04-26 6:23 ` [PATCH v3 06/10] target/arm: optimize indirect branches Emilio G. Cota
2017-04-26 6:23 ` [Qemu-devel] " Emilio G. Cota
2017-04-26 7:54 ` Richard Henderson
2017-04-26 7:54 ` [Qemu-devel] " Richard Henderson
2017-04-27 3:20 ` Emilio G. Cota
2017-04-27 3:20 ` [Qemu-devel] " Emilio G. Cota
2017-04-27 10:25 ` Aurelien Jarno
2017-04-26 6:23 ` [PATCH v3 07/10] target/i386: introduce gen_jr helper to generate lookup_and_goto_ptr Emilio G. Cota
2017-04-26 6:23 ` [Qemu-devel] " Emilio G. Cota
2017-04-26 8:26 ` Richard Henderson
2017-04-26 8:26 ` [Qemu-devel] " Richard Henderson
2017-04-26 6:23 ` [PATCH v3 08/10] target/i386: optimize cross-page direct jumps in softmmu Emilio G. Cota
2017-04-26 6:23 ` [Qemu-devel] " Emilio G. Cota
2017-04-26 8:25 ` Richard Henderson
2017-04-26 8:25 ` [Qemu-devel] " Richard Henderson
2017-04-26 6:23 ` [PATCH v3 09/10] target/i386: optimize indirect branches Emilio G. Cota
2017-04-26 6:23 ` [Qemu-devel] " Emilio G. Cota
2017-04-26 8:24 ` Richard Henderson
2017-04-26 8:24 ` [Qemu-devel] " Richard Henderson
2017-04-26 6:23 ` [PATCH v3 10/10] tb-hash: improve tb_jmp_cache hash function in user mode Emilio G. Cota
2017-04-26 6:23 ` [Qemu-devel] " Emilio G. Cota
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87efwf8nsm.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=agraf@suse.de \
--cc=aurelien@aurel32.net \
--cc=balrogg@gmail.com \
--cc=bobby.prani+qemu@gmail.com \
--cc=cota@braap.org \
--cc=crosthwaite.peter@gmail.com \
--cc=ehabkost@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=sw@weilnetz.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.