Skip to content

Commit 9542130

Browse files
committed
parisc: Fix itlb miss handler for 64-bit programs
For an itlb miss when executing code above 4 Gb on ILP64 adjust the iasq/iaoq in the same way isr/ior was adjusted. This fixes signal delivery for the 64-bit static test program from http://ftp.parisc-linux.org/src/64bit.tar.gz. Note that signals are handled by the signal trampoline code in the 64-bit VDSO which is mapped into high userspace memory region above 4GB for 64-bit processes. Signed-off-by: Helge Deller <deller@gmx.de> Cc: stable@vger.kernel.org # v4.19+
1 parent d244498 commit 9542130

File tree

1 file changed

+2
-4
lines changed

1 file changed

+2
-4
lines changed

arch/parisc/kernel/entry.S

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,17 +1051,15 @@ ENTRY_CFI(intr_save) /* for os_hpmc */
10511051
STREG %r16, PT_ISR(%r29)
10521052
STREG %r17, PT_IOR(%r29)
10531053

1054-
#if 0 && defined(CONFIG_64BIT)
1055-
/* Revisit when we have 64-bit code above 4Gb */
1054+
#if defined(CONFIG_64BIT)
10561055
b,n intr_save2
10571056

10581057
skip_save_ior:
10591058
/* We have a itlb miss, and when executing code above 4 Gb on ILP64, we
10601059
* need to adjust iasq/iaoq here in the same way we adjusted isr/ior
10611060
* above.
10621061
*/
1063-
extrd,u,* %r8,PSW_W_BIT,1,%r1
1064-
cmpib,COND(=),n 1,%r1,intr_save2
1062+
bb,COND(>=),n %r8,PSW_W_BIT,intr_save2
10651063
LDREG PT_IASQ0(%r29), %r16
10661064
LDREG PT_IAOQ0(%r29), %r17
10671065
/* adjust iasq/iaoq */

0 commit comments

Comments
 (0)