mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
ppc: Improve emulation of THRM registers
The 75x and 74xx processors have some thermal monitoring SPRs that some OSes such as MacOS do use. Our current "dumb" implementation isn't good enough and will cause some versions of MacOS to hang during boot. This lifts an improved emulation from MacOnLinux and adapts it to qemu, thus fixing the problem. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> [dwg: Fixed typo in comment, a number of minor checkpatch warnings, and a compile failure with CONFIG_USER_ONLY] Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
820724d170
commit
f0278900d3
3 changed files with 54 additions and 3 deletions
|
@ -1179,23 +1179,32 @@ static void gen_spr_amr(CPUPPCState *env, bool has_iamr)
|
|||
}
|
||||
#endif /* TARGET_PPC64 */
|
||||
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
static void spr_read_thrm(DisasContext *ctx, int gprn, int sprn)
|
||||
{
|
||||
gen_helper_fixup_thrm(cpu_env);
|
||||
gen_load_spr(cpu_gpr[gprn], sprn);
|
||||
spr_load_dump_spr(sprn);
|
||||
}
|
||||
#endif /* !CONFIG_USER_ONLY */
|
||||
|
||||
static void gen_spr_thrm (CPUPPCState *env)
|
||||
{
|
||||
/* Thermal management */
|
||||
/* XXX : not implemented */
|
||||
spr_register(env, SPR_THRM1, "THRM1",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
&spr_read_thrm, &spr_write_generic,
|
||||
0x00000000);
|
||||
/* XXX : not implemented */
|
||||
spr_register(env, SPR_THRM2, "THRM2",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
&spr_read_thrm, &spr_write_generic,
|
||||
0x00000000);
|
||||
/* XXX : not implemented */
|
||||
spr_register(env, SPR_THRM3, "THRM3",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
&spr_read_thrm, &spr_write_generic,
|
||||
0x00000000);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue