All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alistair Francis <alistair23@gmail.com>
To: Richard Henderson <richard.henderson@linaro.org>
Cc: "qemu-devel@nongnu.org Developers" <qemu-devel@nongnu.org>,
	"Laurent Vivier" <laurent@vivier.eu>,
	iii@linux.ibm.com, dramforever@live.com,
	"Alistair Francis" <alistair.francis@wdc.com>,
	"Alex Bennée" <alex.bennee@linaro.org>
Subject: Re: [PATCH v6 10/21] accel/tcg: Make tb_htable_lookup static
Date: Mon, 22 Aug 2022 09:33:11 +1000	[thread overview]
Message-ID: <CAKmqyKP3YH6jBcYB2gjxcPLW+xD+hNUDN9HgT6TZn24mMfte3w@mail.gmail.com> (raw)
In-Reply-To: <20220819032615.884847-11-richard.henderson@linaro.org>

On Fri, Aug 19, 2022 at 1:33 PM Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> The function is not used outside of cpu-exec.c.  Move it and
> its subroutines up in the file, before the first use.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

> ---
>  include/exec/exec-all.h |   3 -
>  accel/tcg/cpu-exec.c    | 122 ++++++++++++++++++++--------------------
>  2 files changed, 61 insertions(+), 64 deletions(-)
>
> diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h
> index 0475ec6007..9f35e3b7a9 100644
> --- a/include/exec/exec-all.h
> +++ b/include/exec/exec-all.h
> @@ -552,9 +552,6 @@ void tb_invalidate_phys_addr(AddressSpace *as, hwaddr addr, MemTxAttrs attrs);
>  #endif
>  void tb_flush(CPUState *cpu);
>  void tb_phys_invalidate(TranslationBlock *tb, tb_page_addr_t page_addr);
> -TranslationBlock *tb_htable_lookup(CPUState *cpu, target_ulong pc,
> -                                   target_ulong cs_base, uint32_t flags,
> -                                   uint32_t cflags);
>  void tb_set_jmp_target(TranslationBlock *tb, int n, uintptr_t addr);
>
>  /* GETPC is the true target of the return instruction that we'll execute.  */
> diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
> index d18081ca6f..7887af6f45 100644
> --- a/accel/tcg/cpu-exec.c
> +++ b/accel/tcg/cpu-exec.c
> @@ -170,6 +170,67 @@ uint32_t curr_cflags(CPUState *cpu)
>      return cflags;
>  }
>
> +struct tb_desc {
> +    target_ulong pc;
> +    target_ulong cs_base;
> +    CPUArchState *env;
> +    tb_page_addr_t phys_page1;
> +    uint32_t flags;
> +    uint32_t cflags;
> +    uint32_t trace_vcpu_dstate;
> +};
> +
> +static bool tb_lookup_cmp(const void *p, const void *d)
> +{
> +    const TranslationBlock *tb = p;
> +    const struct tb_desc *desc = d;
> +
> +    if (tb->pc == desc->pc &&
> +        tb->page_addr[0] == desc->phys_page1 &&
> +        tb->cs_base == desc->cs_base &&
> +        tb->flags == desc->flags &&
> +        tb->trace_vcpu_dstate == desc->trace_vcpu_dstate &&
> +        tb_cflags(tb) == desc->cflags) {
> +        /* check next page if needed */
> +        if (tb->page_addr[1] == -1) {
> +            return true;
> +        } else {
> +            tb_page_addr_t phys_page2;
> +            target_ulong virt_page2;
> +
> +            virt_page2 = (desc->pc & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE;
> +            phys_page2 = get_page_addr_code(desc->env, virt_page2);
> +            if (tb->page_addr[1] == phys_page2) {
> +                return true;
> +            }
> +        }
> +    }
> +    return false;
> +}
> +
> +static TranslationBlock *tb_htable_lookup(CPUState *cpu, target_ulong pc,
> +                                          target_ulong cs_base, uint32_t flags,
> +                                          uint32_t cflags)
> +{
> +    tb_page_addr_t phys_pc;
> +    struct tb_desc desc;
> +    uint32_t h;
> +
> +    desc.env = cpu->env_ptr;
> +    desc.cs_base = cs_base;
> +    desc.flags = flags;
> +    desc.cflags = cflags;
> +    desc.trace_vcpu_dstate = *cpu->trace_dstate;
> +    desc.pc = pc;
> +    phys_pc = get_page_addr_code(desc.env, pc);
> +    if (phys_pc == -1) {
> +        return NULL;
> +    }
> +    desc.phys_page1 = phys_pc & TARGET_PAGE_MASK;
> +    h = tb_hash_func(phys_pc, pc, flags, cflags, *cpu->trace_dstate);
> +    return qht_lookup_custom(&tb_ctx.htable, &desc, h, tb_lookup_cmp);
> +}
> +
>  /* Might cause an exception, so have a longjmp destination ready */
>  static inline TranslationBlock *tb_lookup(CPUState *cpu, target_ulong pc,
>                                            target_ulong cs_base,
> @@ -485,67 +546,6 @@ void cpu_exec_step_atomic(CPUState *cpu)
>      end_exclusive();
>  }
>
> -struct tb_desc {
> -    target_ulong pc;
> -    target_ulong cs_base;
> -    CPUArchState *env;
> -    tb_page_addr_t phys_page1;
> -    uint32_t flags;
> -    uint32_t cflags;
> -    uint32_t trace_vcpu_dstate;
> -};
> -
> -static bool tb_lookup_cmp(const void *p, const void *d)
> -{
> -    const TranslationBlock *tb = p;
> -    const struct tb_desc *desc = d;
> -
> -    if (tb->pc == desc->pc &&
> -        tb->page_addr[0] == desc->phys_page1 &&
> -        tb->cs_base == desc->cs_base &&
> -        tb->flags == desc->flags &&
> -        tb->trace_vcpu_dstate == desc->trace_vcpu_dstate &&
> -        tb_cflags(tb) == desc->cflags) {
> -        /* check next page if needed */
> -        if (tb->page_addr[1] == -1) {
> -            return true;
> -        } else {
> -            tb_page_addr_t phys_page2;
> -            target_ulong virt_page2;
> -
> -            virt_page2 = (desc->pc & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE;
> -            phys_page2 = get_page_addr_code(desc->env, virt_page2);
> -            if (tb->page_addr[1] == phys_page2) {
> -                return true;
> -            }
> -        }
> -    }
> -    return false;
> -}
> -
> -TranslationBlock *tb_htable_lookup(CPUState *cpu, target_ulong pc,
> -                                   target_ulong cs_base, uint32_t flags,
> -                                   uint32_t cflags)
> -{
> -    tb_page_addr_t phys_pc;
> -    struct tb_desc desc;
> -    uint32_t h;
> -
> -    desc.env = cpu->env_ptr;
> -    desc.cs_base = cs_base;
> -    desc.flags = flags;
> -    desc.cflags = cflags;
> -    desc.trace_vcpu_dstate = *cpu->trace_dstate;
> -    desc.pc = pc;
> -    phys_pc = get_page_addr_code(desc.env, pc);
> -    if (phys_pc == -1) {
> -        return NULL;
> -    }
> -    desc.phys_page1 = phys_pc & TARGET_PAGE_MASK;
> -    h = tb_hash_func(phys_pc, pc, flags, cflags, *cpu->trace_dstate);
> -    return qht_lookup_custom(&tb_ctx.htable, &desc, h, tb_lookup_cmp);
> -}
> -
>  void tb_set_jmp_target(TranslationBlock *tb, int n, uintptr_t addr)
>  {
>      if (TCG_TARGET_HAS_direct_jump) {
> --
> 2.34.1
>
>


  reply	other threads:[~2022-08-21 23:35 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-19  3:25 [PATCH v6 00/21] linux-user: Fix siginfo_t contents when jumping to non-readable pages Richard Henderson
2022-08-19  3:25 ` [PATCH v6 01/21] linux-user/arm: Mark the commpage executable Richard Henderson
2022-08-19  3:25 ` [PATCH v6 02/21] linux-user/hppa: Allocate page zero as a commpage Richard Henderson
2022-08-19  3:25 ` [PATCH v6 03/21] linux-user/x86_64: Allocate vsyscall page " Richard Henderson
2022-08-19  3:25 ` [PATCH v6 04/21] linux-user: Honor PT_GNU_STACK Richard Henderson
2022-08-19  3:25 ` [PATCH v6 05/21] linux-user: Clear translations and tb_jmp_cache on mprotect() Richard Henderson
2022-08-19  3:26 ` [PATCH v6 06/21] tests/tcg/i386: Move smc_code2 to an executable section Richard Henderson
2022-08-19  3:26 ` [PATCH v6 07/21] accel/tcg: Introduce is_same_page() Richard Henderson
2022-08-21 23:27   ` Alistair Francis
2022-08-19  3:26 ` [PATCH v6 08/21] accel/tcg: Properly implement get_page_addr_code for user-only Richard Henderson
2022-08-21 23:39   ` Alistair Francis
2022-08-19  3:26 ` [PATCH v6 09/21] accel/tcg: Unlock mmap_lock after longjmp Richard Henderson
2022-08-21 23:30   ` Alistair Francis
2022-08-19  3:26 ` [PATCH v6 10/21] accel/tcg: Make tb_htable_lookup static Richard Henderson
2022-08-21 23:33   ` Alistair Francis [this message]
2022-08-19  3:26 ` [PATCH v6 11/21] accel/tcg: Move qemu_ram_addr_from_host_nofail to physmem.c Richard Henderson
2022-08-21 23:34   ` Alistair Francis
2022-08-19  3:26 ` [PATCH v6 12/21] accel/tcg: Use probe_access_internal for softmmu get_page_addr_code_hostp Richard Henderson
2022-08-19  3:26 ` [PATCH v6 13/21] accel/tcg: Add nofault parameter to get_page_addr_code_hostp Richard Henderson
2022-08-21 23:37   ` Alistair Francis
2022-08-19  3:26 ` [PATCH v6 14/21] accel/tcg: Raise PROT_EXEC exception early Richard Henderson
2022-08-21 23:40   ` Alistair Francis
2022-08-19  3:26 ` [PATCH v6 15/21] accel/tcg: Remove translator_ldsw Richard Henderson
2022-08-21 23:41   ` Alistair Francis
2022-08-19  3:26 ` [PATCH v6 16/21] accel/tcg: Add pc and host_pc params to gen_intermediate_code Richard Henderson
2022-08-21 23:42   ` Alistair Francis
2022-08-19  3:26 ` [PATCH v6 17/21] accel/tcg: Add fast path for translator_ld* Richard Henderson
2022-08-22 23:15   ` Ilya Leoshkevich
2022-08-19  3:26 ` [PATCH v6 18/21] target/s390x: Make translator stop before the end of a page Richard Henderson
2022-08-19  3:26 ` [PATCH v6 19/21] target/i386: " Richard Henderson
2022-08-19  3:26 ` [PATCH v6 20/21] target/riscv: Add MAX_INSN_LEN and insn_len Richard Henderson
2022-08-21 23:44   ` Alistair Francis
2022-08-19  3:26 ` [PATCH v6 21/21] target/riscv: Make translator stop before the end of a page Richard Henderson
2022-08-21 23:47   ` Alistair Francis
2022-08-19 17:14 ` [PATCH v6 00/21] linux-user: Fix siginfo_t contents when jumping to non-readable pages Vivian Wang

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=CAKmqyKP3YH6jBcYB2gjxcPLW+xD+hNUDN9HgT6TZn24mMfte3w@mail.gmail.com \
    --to=alistair23@gmail.com \
    --cc=alex.bennee@linaro.org \
    --cc=alistair.francis@wdc.com \
    --cc=dramforever@live.com \
    --cc=iii@linux.ibm.com \
    --cc=laurent@vivier.eu \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /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.