Commit d2444986 authored by Helge Deller's avatar Helge Deller Committed by Helge Deller
Browse files

parisc: Fix 64-bit userspace syscall path

Currently the glibc isn't yet ported to 64-bit for hppa, so
there is no usable userspace available yet.
But it's possible to manually build a static 64-bit binary
and run that for testing. One such 64-bit test program is
available at http://ftp.parisc-linux.org/src/64bit.tar.gz


and it shows various issues with the existing 64-bit syscall
path in the kernel.
This patch fixes those issues.

Signed-off-by: default avatarHelge Deller <deller@gmx.de>
Cc: stable@vger.kernel.org      # v4.19+
parent f31b2569
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -243,10 +243,10 @@ linux_gateway_entry:

#ifdef CONFIG_64BIT
	ldil	L%sys_call_table, %r1
	or,=	%r2,%r2,%r2
	addil	L%(sys_call_table64-sys_call_table), %r1
	or,ev	%r2,%r2,%r2
	ldil	L%sys_call_table64, %r1
	ldo	R%sys_call_table(%r1), %r19
	or,=	%r2,%r2,%r2
	or,ev	%r2,%r2,%r2
	ldo	R%sys_call_table64(%r1), %r19
#else
	load32	sys_call_table, %r19
@@ -379,10 +379,10 @@ tracesys_next:
	extrd,u	%r19,63,1,%r2			/* W hidden in bottom bit */

	ldil	L%sys_call_table, %r1
	or,=	%r2,%r2,%r2
	addil	L%(sys_call_table64-sys_call_table), %r1
	or,ev	%r2,%r2,%r2
	ldil	L%sys_call_table64, %r1
	ldo	R%sys_call_table(%r1), %r19
	or,=	%r2,%r2,%r2
	or,ev	%r2,%r2,%r2
	ldo	R%sys_call_table64(%r1), %r19
#else
	load32	sys_call_table, %r19
@@ -1327,6 +1327,8 @@ ENTRY(sys_call_table)
END(sys_call_table)

#ifdef CONFIG_64BIT
#undef __SYSCALL_WITH_COMPAT
#define __SYSCALL_WITH_COMPAT(nr, native, compat)	__SYSCALL(nr, native)
	.align 8
ENTRY(sys_call_table64)
#include <asm/syscall_table_64.h>    /* 64-bit syscalls */