mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-06 17:35:20 +02:00
parisc: Fix 64-bit userspace syscall path
commit d24449864d
upstream.
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: Helge Deller <deller@gmx.de>
Cc: stable@vger.kernel.org # v4.19+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
89bbc55d6b
commit
42451ba0d6
|
@ -243,10 +243,10 @@ linux_gateway_entry:
|
||||||
|
|
||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
ldil L%sys_call_table, %r1
|
ldil L%sys_call_table, %r1
|
||||||
or,= %r2,%r2,%r2
|
or,ev %r2,%r2,%r2
|
||||||
addil L%(sys_call_table64-sys_call_table), %r1
|
ldil L%sys_call_table64, %r1
|
||||||
ldo R%sys_call_table(%r1), %r19
|
ldo R%sys_call_table(%r1), %r19
|
||||||
or,= %r2,%r2,%r2
|
or,ev %r2,%r2,%r2
|
||||||
ldo R%sys_call_table64(%r1), %r19
|
ldo R%sys_call_table64(%r1), %r19
|
||||||
#else
|
#else
|
||||||
load32 sys_call_table, %r19
|
load32 sys_call_table, %r19
|
||||||
|
@ -379,10 +379,10 @@ tracesys_next:
|
||||||
extrd,u %r19,63,1,%r2 /* W hidden in bottom bit */
|
extrd,u %r19,63,1,%r2 /* W hidden in bottom bit */
|
||||||
|
|
||||||
ldil L%sys_call_table, %r1
|
ldil L%sys_call_table, %r1
|
||||||
or,= %r2,%r2,%r2
|
or,ev %r2,%r2,%r2
|
||||||
addil L%(sys_call_table64-sys_call_table), %r1
|
ldil L%sys_call_table64, %r1
|
||||||
ldo R%sys_call_table(%r1), %r19
|
ldo R%sys_call_table(%r1), %r19
|
||||||
or,= %r2,%r2,%r2
|
or,ev %r2,%r2,%r2
|
||||||
ldo R%sys_call_table64(%r1), %r19
|
ldo R%sys_call_table64(%r1), %r19
|
||||||
#else
|
#else
|
||||||
load32 sys_call_table, %r19
|
load32 sys_call_table, %r19
|
||||||
|
@ -1327,6 +1327,8 @@ ENTRY(sys_call_table)
|
||||||
END(sys_call_table)
|
END(sys_call_table)
|
||||||
|
|
||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
|
#undef __SYSCALL_WITH_COMPAT
|
||||||
|
#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, native)
|
||||||
.align 8
|
.align 8
|
||||||
ENTRY(sys_call_table64)
|
ENTRY(sys_call_table64)
|
||||||
#include <asm/syscall_table_64.h> /* 64-bit syscalls */
|
#include <asm/syscall_table_64.h> /* 64-bit syscalls */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user