diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2024-09-04 13:20:17 +0100 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2024-09-04 13:20:17 +0100 |
| commit | cab1afb393ea0943b3086188e91d71d594ede6bf (patch) | |
| tree | f56ee5e938c071992ad256d6db8ae6cfee9654cc | |
| parent | e638d685ec2a0700fb9529cbd1b2823ac4120c53 (diff) | |
| parent | d33d3adb573794903380e03e767e06470514cefe (diff) | |
| download | focaccia-qemu-cab1afb393ea0943b3086188e91d71d594ede6bf.tar.gz focaccia-qemu-cab1afb393ea0943b3086188e91d71d594ede6bf.zip | |
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>
| -rw-r--r-- | target/hppa/cpu.h | 4 | ||||
| -rw-r--r-- | target/hppa/helper.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/target/hppa/cpu.h b/target/hppa/cpu.h index 2bcb3b602b..43074d80bf 100644 --- a/target/hppa/cpu.h +++ b/target/hppa/cpu.h @@ -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 diff --git a/target/hppa/helper.c b/target/hppa/helper.c index b79ddd8184..d4b1a3cd5a 100644 --- a/target/hppa/helper.c +++ b/target/hppa/helper.c @@ -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; |