mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
target/sparc: fake UltraSPARC T1 PCR and PIC registers
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 <atar4qemu@gmail.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-ID: <20250209211248.50383-1-atar4qemu@gmail.com>
This commit is contained in:
parent
7a74e46808
commit
172e7644f3
2 changed files with 25 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -2882,6 +2882,14 @@ 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)
|
||||
{
|
||||
return tcg_constant_tl(0);
|
||||
}
|
||||
|
||||
TRANS(RDPIC, HYPV, do_rd_special, supervisor(dc), a->rd, do_rdpic)
|
||||
|
||||
|
||||
static TCGv do_rdccr(DisasContext *dc, TCGv dst)
|
||||
{
|
||||
gen_helper_rdccr(dst, tcg_env);
|
||||
|
@ -3315,6 +3323,17 @@ static void do_wrfprs(DisasContext *dc, TCGv src)
|
|||
|
||||
TRANS(WRFPRS, 64, do_wr_special, a, true, do_wrfprs)
|
||||
|
||||
static bool do_priv_nop(DisasContext *dc, bool priv)
|
||||
{
|
||||
if (!priv) {
|
||||
return raise_priv(dc);
|
||||
}
|
||||
return advance_pc(dc);
|
||||
}
|
||||
|
||||
TRANS(WRPCR, HYPV, do_priv_nop, supervisor(dc))
|
||||
TRANS(WRPIC, HYPV, do_priv_nop, supervisor(dc))
|
||||
|
||||
static void do_wrgsr(DisasContext *dc, TCGv src)
|
||||
{
|
||||
gen_trap_ifnofpu(dc);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue