hppa target fixes
Two important patches for the hppa target which missed qemu-v9.1: - One fix for random linux-user crashes - One fix for random issues due to loosing the division V-bit during delivery of hardware interrupts. This triggers all sorts of random faults when running in system mode. Helge -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQS86RI+GtKfB8BJu973ErUQojoPXwUCZtgy9AAKCRD3ErUQojoP X068AQCDCwbzsoQpFX/6Kx2lm3UsW4wrESh/CYcP+epd+X59dAD+LxNwN0ol5Gvl kPzM+7QdKC7geIXvBxIG6UuggTscJgM= =9roy -----END PGP SIGNATURE----- Merge tag 'hppa-v9.1-fixes-pull-request' of https://github.com/hdeller/qemu-hppa into staging hppa target fixes Two important patches for the hppa target which missed qemu-v9.1: - One fix for random linux-user crashes - One fix for random issues due to loosing the division V-bit during delivery of hardware interrupts. This triggers all sorts of random faults when running in system mode. Helge # -----BEGIN PGP SIGNATURE----- # # iHUEABYKAB0WIQS86RI+GtKfB8BJu973ErUQojoPXwUCZtgy9AAKCRD3ErUQojoP # X068AQCDCwbzsoQpFX/6Kx2lm3UsW4wrESh/CYcP+epd+X59dAD+LxNwN0ol5Gvl # kPzM+7QdKC7geIXvBxIG6UuggTscJgM= # =9roy # -----END PGP SIGNATURE----- # gpg: Signature made Wed 04 Sep 2024 11:14:12 BST # gpg: using EDDSA key BCE9123E1AD29F07C049BBDEF712B510A23A0F5F # gpg: Good signature from "Helge Deller <deller@gmx.de>" [unknown] # gpg: aka "Helge Deller <deller@kernel.org>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 4544 8228 2CD9 10DB EF3D 25F8 3E5F 3D04 A7A2 4603 # Subkey fingerprint: BCE9 123E 1AD2 9F07 C049 BBDE F712 B510 A23A 0F5F * tag 'hppa-v9.1-fixes-pull-request' of https://github.com/hdeller/qemu-hppa: target/hppa: Fix random 32-bit linux-user crashes target/hppa: Fix PSW V-bit packaging in cpu_hppa_get for hppa64 Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
cab1afb393
@ -211,7 +211,7 @@ typedef struct CPUArchState {
|
|||||||
uint32_t psw; /* All psw bits except the following: */
|
uint32_t psw; /* All psw bits except the following: */
|
||||||
uint32_t psw_xb; /* X and B, in their normal positions */
|
uint32_t psw_xb; /* X and B, in their normal positions */
|
||||||
target_ulong psw_n; /* boolean */
|
target_ulong psw_n; /* boolean */
|
||||||
target_long psw_v; /* in most significant bit */
|
target_long psw_v; /* in bit 31 */
|
||||||
|
|
||||||
/* Splitting the carry-borrow field into the MSB and "the rest", allows
|
/* Splitting the carry-borrow field into the MSB and "the rest", allows
|
||||||
* for "the rest" to be deleted when it is unused, but the MSB is in use.
|
* for "the rest" to be deleted when it is unused, but the MSB is in use.
|
||||||
@ -319,7 +319,7 @@ static inline target_ulong hppa_form_gva_psw(target_ulong psw, uint64_t spc,
|
|||||||
target_ulong off)
|
target_ulong off)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USER_ONLY
|
#ifdef CONFIG_USER_ONLY
|
||||||
return off;
|
return off & gva_offset_mask(psw);
|
||||||
#else
|
#else
|
||||||
return spc | (off & gva_offset_mask(psw));
|
return spc | (off & gva_offset_mask(psw));
|
||||||
#endif
|
#endif
|
||||||
|
@ -53,7 +53,7 @@ target_ulong cpu_hppa_get_psw(CPUHPPAState *env)
|
|||||||
}
|
}
|
||||||
|
|
||||||
psw |= env->psw_n * PSW_N;
|
psw |= env->psw_n * PSW_N;
|
||||||
psw |= (env->psw_v < 0) * PSW_V;
|
psw |= ((env->psw_v >> 31) & 1) * PSW_V;
|
||||||
psw |= env->psw | env->psw_xb;
|
psw |= env->psw | env->psw_xb;
|
||||||
|
|
||||||
return psw;
|
return psw;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user