qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 4/4] target/xtensa: Convert to TranslatorOps


From: Max Filippov
Subject: Re: [Qemu-devel] [PATCH 4/4] target/xtensa: Convert to TranslatorOps
Date: Sun, 13 May 2018 11:37:03 -0700

On Sat, May 12, 2018 at 10:57 AM, Richard Henderson
<address@hidden> wrote:
> Signed-off-by: Richard Henderson <address@hidden>
> ---
>  target/xtensa/translate.c | 229 ++++++++++++++++++++------------------
>  1 file changed, 122 insertions(+), 107 deletions(-)

[...]

> -    } while (dc->base.is_jmp == DISAS_NEXT &&
> -             insn_count < max_insns &&
> -             dc->pc - page_start < TARGET_PAGE_SIZE &&
> -             dc->pc - page_start + xtensa_insn_len(env, dc) <= 
> TARGET_PAGE_SIZE
> -             && !tcg_op_buf_full());
> -done:

[...]

> +    /* End the TB if the next insn will cross into the next page.  */
> +    page_start = dc->base.pc_first & TARGET_PAGE_MASK;
> +    if (dc->base.is_jmp == DISAS_NEXT &&
> +        dc->pc - page_start < TARGET_PAGE_SIZE &&
> +        dc->pc - page_start + xtensa_insn_len(env, dc) <= TARGET_PAGE_SIZE) {

Originally it was the condition to continue translation.
To end the TB when the next instruction will cross into the next page the
condition must be changed to something like

    if (dc->base.is_jmp == DISAS_NEXT &&
        (dc->pc - page_start >= TARGET_PAGE_SIZE ||
         dc->pc - page_start + xtensa_insn_len(env, dc) > TARGET_PAGE_SIZE)) {

With that change all tests in tests/tcg/xtensa are passing.
I'll play with it some more...

-- 
Thanks.
-- Max



reply via email to

[Prev in Thread] Current Thread [Next in Thread]