On Sun, Feb 2, 2025 at 10:47 PM Richard Henderson <richard.hender...@linaro.org> wrote: > > On 1/31/25 13:44, Artyom Tarasenko wrote: > > fake access to > > PCR Performance Control Register > > and > > PIC Performance Instrumentation Counter. > > > > Ignore writes in privileged mode, and return 0 on reads. > > > > This allows booting Tribblix, MilaX and v9os under Niagara target. > > > > Signed-off-by: Artyom Tarasenko <atar4q...@gmail.com> > > --- > > target/sparc/insns.decode | 7 ++++++- > > target/sparc/translate.c | 20 ++++++++++++++++++++ > > 2 files changed, 26 insertions(+), 1 deletion(-) > > > > diff --git a/target/sparc/insns.decode b/target/sparc/insns.decode > > index 989c20b44a..504147563c 100644 > > --- a/target/sparc/insns.decode > > +++ b/target/sparc/insns.decode > > @@ -96,7 +96,10 @@ CALL 01 i:s30 > > RDTICK 10 rd:5 101000 00100 0 0000000000000 > > RDPC 10 rd:5 101000 00101 0 0000000000000 > > RDFPRS 10 rd:5 101000 00110 0 0000000000000 > > - RDASR17 10 rd:5 101000 10001 0 0000000000000 > > + { > > + RDASR17 10 rd:5 101000 10001 0 0000000000000 > > + RDPIC 10 rd:5 101000 10001 0 0000000000000 > > + } > > RDGSR 10 rd:5 101000 10011 0 0000000000000 > > RDSOFTINT 10 rd:5 101000 10110 0 0000000000000 > > RDTICK_CMPR 10 rd:5 101000 10111 0 0000000000000 > > @@ -114,6 +117,8 @@ CALL 01 i:s30 > > WRCCR 10 00010 110000 ..... . ............. @n_r_ri > > WRASI 10 00011 110000 ..... . ............. @n_r_ri > > WRFPRS 10 00110 110000 ..... . ............. @n_r_ri > > + WRPCR 10 10000 110000 01000 0 0000000000000 > > + WRPIC 10 10001 110000 01000 0 0000000000000 > > { > > WRGSR 10 10011 110000 ..... . ............. @n_r_ri > > WRPOWERDOWN 10 10011 110000 ..... . ............. @n_r_ri > > diff --git a/target/sparc/translate.c b/target/sparc/translate.c > > index 7e5c7351cb..285c9b0a59 100644 > > --- a/target/sparc/translate.c > > +++ b/target/sparc/translate.c > > @@ -2882,6 +2882,15 @@ static TCGv do_rd_leon3_config(DisasContext *dc, > > TCGv dst) > > > > TRANS(RDASR17, ASR17, do_rd_special, true, a->rd, do_rd_leon3_config) > > > > +static TCGv do_rdpic(DisasContext *dc, TCGv dst) > > +{ > > + tcg_gen_movi_tl(dst, 0UL); > > + return dst; > > +} > > return tcg_constant_tl(0); > > > + > > +TRANS(RDPIC, HYPV, do_rd_special, true, a->rd, do_rdpic) > > Surely reads are not allowed in user mode.
Thanks Richard, addressed it in v2.