target/ppc: Fix move-to timebase SPR access permissions
The move-to timebase registers TBU and TBL can not be read, and they can not be written in supervisor mode on hypervisor-capable CPUs. Reviewed-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
This commit is contained in:
parent
80e28a4147
commit
f6940474fa
@ -468,18 +468,33 @@ void register_generic_sprs(PowerPCCPU *cpu)
|
||||
&spr_read_tbl, SPR_NOACCESS,
|
||||
&spr_read_tbl, SPR_NOACCESS,
|
||||
0x00000000);
|
||||
spr_register(env, SPR_WR_TBL, "TBL",
|
||||
&spr_read_tbl, SPR_NOACCESS,
|
||||
&spr_read_tbl, &spr_write_tbl,
|
||||
0x00000000);
|
||||
spr_register(env, SPR_TBU, "TBU",
|
||||
&spr_read_tbu, SPR_NOACCESS,
|
||||
&spr_read_tbu, SPR_NOACCESS,
|
||||
0x00000000);
|
||||
spr_register(env, SPR_WR_TBU, "TBU",
|
||||
&spr_read_tbu, SPR_NOACCESS,
|
||||
&spr_read_tbu, &spr_write_tbu,
|
||||
0x00000000);
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
if (env->has_hv_mode) {
|
||||
spr_register_hv(env, SPR_WR_TBL, "TBL",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
SPR_NOACCESS, &spr_write_tbl,
|
||||
0x00000000);
|
||||
spr_register_hv(env, SPR_WR_TBU, "TBU",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
SPR_NOACCESS, &spr_write_tbu,
|
||||
0x00000000);
|
||||
} else {
|
||||
spr_register(env, SPR_WR_TBL, "TBL",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
SPR_NOACCESS, &spr_write_tbl,
|
||||
0x00000000);
|
||||
spr_register(env, SPR_WR_TBU, "TBU",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
SPR_NOACCESS, &spr_write_tbu,
|
||||
0x00000000);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void register_non_embedded_sprs(CPUPPCState *env)
|
||||
|
Loading…
x
Reference in New Issue
Block a user