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_xb; /* X and B, in their normal positions */
|
||||
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
|
||||
* 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)
|
||||
{
|
||||
#ifdef CONFIG_USER_ONLY
|
||||
return off;
|
||||
return off & gva_offset_mask(psw);
|
||||
#else
|
||||
return spc | (off & gva_offset_mask(psw));
|
||||
#endif
|
||||
|
@ -53,7 +53,7 @@ target_ulong cpu_hppa_get_psw(CPUHPPAState *env)
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
return psw;
|
||||
|
Loading…
Reference in New Issue
Block a user