mirror of
https://github.com/mii443/qemu.git
synced 2025-12-16 17:18:49 +00:00
target/ppc: Fix width of some 32-bit SPRs
Some 32-bit SPRs are incorrectly implemented as 64-bits on 64-bit targets. This changes VRSAVE, DSISR, HDSISR, DAWRX0, PIDR, LPIDR, DEXCR, HDEXCR, CTRL, TSCR, MMCRH, and PMC[1-6] from to be 32-bit registers. This only goes by the 32/64 classification in the architecture, it does not try to implement finer details of SPR implementation (e.g., not all bits implemented as simple read/write storage). Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com> Message-Id: <20230515092655.171206-2-npiggin@gmail.com> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
committed by
Daniel Henrique Barboza
parent
5260ecffd2
commit
fbda88f7ab
@@ -5085,8 +5085,8 @@ static void register_book3s_altivec_sprs(CPUPPCState *env)
|
||||
}
|
||||
|
||||
spr_register_kvm(env, SPR_VRSAVE, "VRSAVE",
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
&spr_read_generic, &spr_write_generic32,
|
||||
&spr_read_generic, &spr_write_generic32,
|
||||
KVM_REG_PPC_VRSAVE, 0x00000000);
|
||||
|
||||
}
|
||||
@@ -5120,7 +5120,7 @@ static void register_book3s_207_dbg_sprs(CPUPPCState *env)
|
||||
spr_register_kvm_hv(env, SPR_DAWRX0, "DAWRX0",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
&spr_read_generic, &spr_write_generic32,
|
||||
KVM_REG_PPC_DAWRX, 0x00000000);
|
||||
spr_register_kvm_hv(env, SPR_CIABR, "CIABR",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
@@ -5376,7 +5376,7 @@ static void register_book3s_ids_sprs(CPUPPCState *env)
|
||||
spr_register_hv(env, SPR_TSCR, "TSCR",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
&spr_read_generic, &spr_write_generic32,
|
||||
0x00000000);
|
||||
spr_register_hv(env, SPR_HMER, "HMER",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
@@ -5406,7 +5406,7 @@ static void register_book3s_ids_sprs(CPUPPCState *env)
|
||||
spr_register_hv(env, SPR_MMCRC, "MMCRC",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
&spr_read_generic, &spr_write_generic32,
|
||||
0x00000000);
|
||||
spr_register_hv(env, SPR_MMCRH, "MMCRH",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
@@ -5441,7 +5441,7 @@ static void register_book3s_ids_sprs(CPUPPCState *env)
|
||||
spr_register_hv(env, SPR_HDSISR, "HDSISR",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
&spr_read_generic, &spr_write_generic32,
|
||||
0x00000000);
|
||||
spr_register_hv(env, SPR_HRMOR, "HRMOR",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
@@ -5665,7 +5665,7 @@ static void register_power7_book4_sprs(CPUPPCState *env)
|
||||
KVM_REG_PPC_ACOP, 0);
|
||||
spr_register_kvm(env, SPR_BOOKS_PID, "PID",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
&spr_read_generic, &spr_write_generic32,
|
||||
KVM_REG_PPC_PID, 0);
|
||||
#endif
|
||||
}
|
||||
@@ -5730,7 +5730,7 @@ static void register_power10_dexcr_sprs(CPUPPCState *env)
|
||||
{
|
||||
spr_register(env, SPR_DEXCR, "DEXCR",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
&spr_read_generic, &spr_write_generic32,
|
||||
0);
|
||||
|
||||
spr_register(env, SPR_UDEXCR, "DEXCR",
|
||||
@@ -5741,7 +5741,7 @@ static void register_power10_dexcr_sprs(CPUPPCState *env)
|
||||
spr_register_hv(env, SPR_HDEXCR, "HDEXCR",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
&spr_read_generic, &spr_write_generic32,
|
||||
0);
|
||||
|
||||
spr_register(env, SPR_UHDEXCR, "HDEXCR",
|
||||
|
||||
Reference in New Issue
Block a user