On 05/20/2011 12:14 AM, Max Filippov wrote:
> As far as I can see LITBASE usage pattern is that it is set up once
> in early initialization and is never changed after.
That's probably true on a per-program basis. I.e. for semi-hosting or userland
emulation, hard-coding litbase into the TB could m
> > +static void gen_wsr_litbase(DisasContext *dc, uint32_t sr, TCGv_i32 s)
> > +{
> > +tcg_gen_mov_i32(cpu_SR[sr], s);
> > +/* This can change tb->flags, so exit tb */
> > +gen_jumpi_check_loop_end(dc, -1);
> > +}
>
> Surely you have to flush all TB's when changing litbase?
>
> > +
On 05/17/2011 03:32 PM, Max Filippov wrote:
> +static void gen_wsr_litbase(DisasContext *dc, uint32_t sr, TCGv_i32 s)
> +{
> +tcg_gen_mov_i32(cpu_SR[sr], s);
> +/* This can change tb->flags, so exit tb */
> +gen_jumpi_check_loop_end(dc, -1);
> +}
Surely you have to flush all TB's when
See ISA, 4.3.3 for details.
TB flag XTENSA_TBFLAG_LITBASE is used to track enable bit of LITBASE SR.
Signed-off-by: Max Filippov
---
RFC -> PATCH changes:
- add XTENSA_TBFLAG_LITBASE, use it in L32R;
---
target-xtensa/cpu.h |6 ++
target-xtensa/helper.c|1 +
target-xtensa/