From: Yury Norov <ynorov@caviumnetworks.com> To: <arnd@arndb.de>, <catalin.marinas@arm.com>, <linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org> Cc: <ynorov@caviumnetworks.com>, <pinskia@gmail.com>, <Prasun.Kapoor@caviumnetworks.com>, <schwab@suse.de>, <Nathan_Lynch@mentor.com>, <agraf@suse.de>, <klimov.linux@gmail.com>, <broonie@kernel.org>, <jan.dakinevich@gmail.com>, <ddaney.cavm@gmail.com>, <bamvor.zhangjian@huawei.com>, <philipp.tomsich@theobroma-systems.com>, <joseph@codesourcery.com>, <christoph.muellner@theobroma-systems.com> Subject: [PATCH v6 17/20] arm64: ilp32: introduce ilp32-specific handlers for sigframe Date: Wed, 16 Dec 2015 00:42:43 +0300 [thread overview] Message-ID: <1450215766-14765-18-git-send-email-ynorov@caviumnetworks.com> (raw) In-Reply-To: <1450215766-14765-1-git-send-email-ynorov@caviumnetworks.com> ILP32 uses AARCH32 compat structures and syscall handlers for signals. But ILP32 struct rt_sigframe differs from both LP64 and AARCH32. So some specific mechanism is needed to take care of it. Signed-off-by: Yury Norov <ynorov@caviumnetworks.com> --- arch/arm64/include/asm/signal_ilp32.h | 38 ++++++++++ arch/arm64/kernel/Makefile | 2 +- arch/arm64/kernel/entry_ilp32.S | 32 +++++++++ arch/arm64/kernel/signal.c | 3 + arch/arm64/kernel/signal_ilp32.c | 126 ++++++++++++++++++++++++++++++++++ arch/arm64/kernel/sys_ilp32.c | 3 + 6 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 arch/arm64/include/asm/signal_ilp32.h create mode 100644 arch/arm64/kernel/entry_ilp32.S create mode 100644 arch/arm64/kernel/signal_ilp32.c diff --git a/arch/arm64/include/asm/signal_ilp32.h b/arch/arm64/include/asm/signal_ilp32.h new file mode 100644 index 0000000..81e1909 --- /dev/null +++ b/arch/arm64/include/asm/signal_ilp32.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2015 Cavium Networks. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef __ASM_SIGNAL_ILP32_H +#define __ASM_SIGNAL_ILP32_H + +#ifdef __KERNEL__ +#ifdef CONFIG_ARM64_ILP32 + +#include <linux/compat.h> + +int ilp32_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set, + struct pt_regs *regs); + +#else + +static inline int ilp32_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set, + struct pt_regs *regs) +{ + return -ENOSYS; +} + +#endif /* CONFIG_ARM64_ILP32 */ + +#endif /* __KERNEL__ */ +#endif /* __ASM_SIGNAL_ILP32_H */ diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile index f90fb08..f92e707 100644 --- a/arch/arm64/kernel/Makefile +++ b/arch/arm64/kernel/Makefile @@ -24,7 +24,7 @@ arm64-obj-$(CONFIG_AARCH32_EL0) += sys32.o kuser32.o signal32.o \ sys_compat.o entry32.o \ ../../arm/kernel/opcodes.o arm64-obj-$(CONFIG_FUNCTION_TRACER) += ftrace.o entry-ftrace.o -arm64-obj-$(CONFIG_ARM64_ILP32) += sys_ilp32.o +arm64-obj-$(CONFIG_ARM64_ILP32) += signal_ilp32.o sys_ilp32.o entry_ilp32.o arm64-obj-$(CONFIG_COMPAT) += entry32-common.o signal32_common.o arm64-obj-$(CONFIG_MODULES) += arm64ksyms.o module.o arm64-obj-$(CONFIG_PERF_EVENTS) += perf_regs.o perf_callchain.o diff --git a/arch/arm64/kernel/entry_ilp32.S b/arch/arm64/kernel/entry_ilp32.S new file mode 100644 index 0000000..424060f --- /dev/null +++ b/arch/arm64/kernel/entry_ilp32.S @@ -0,0 +1,32 @@ +/* + * ILP32 system call wrappers + * + * Copyright (C) 2015 Cavium Networks. + * Author: Yury Norov <ynorov@caviumnetworks.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <linux/linkage.h> +#include <linux/const.h> + +#include <asm/assembler.h> +#include <asm/asm-offsets.h> +#include <asm/errno.h> +#include <asm/page.h> + +ENTRY(ilp32_sys_rt_sigreturn_wrapper) + mov x0, sp + b ilp32_sys_rt_sigreturn +ENDPROC(ilp32_sys_rt_sigreturn_wrapper) + diff --git a/arch/arm64/kernel/signal.c b/arch/arm64/kernel/signal.c index 4b8efe5..d67a9b8 100644 --- a/arch/arm64/kernel/signal.c +++ b/arch/arm64/kernel/signal.c @@ -34,6 +34,7 @@ #include <asm/fpsimd.h> #include <asm/signal32.h> #include <asm/signal_common.h> +#include <asm/signal_ilp32.h> /* * Do a signal return; undo the signal stack. These are aligned to 128-bit. @@ -153,6 +154,8 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) ret = compat_setup_rt_frame(usig, ksig, oldset, regs); else ret = compat_setup_frame(usig, ksig, oldset, regs); + } else if (is_ilp32_compat_task()) { + ret = ilp32_setup_rt_frame(usig, ksig, oldset, regs); } else { ret = setup_rt_frame(usig, ksig, oldset, regs); } diff --git a/arch/arm64/kernel/signal_ilp32.c b/arch/arm64/kernel/signal_ilp32.c new file mode 100644 index 0000000..d38434b --- /dev/null +++ b/arch/arm64/kernel/signal_ilp32.c @@ -0,0 +1,126 @@ +/* + * Based on arch/arm/kernel/signal.c + * + * Copyright (C) 2015 Cavium Networks. + * Yury Norov <ynorov@caviumnetworks.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <linux/compat.h> +#include <linux/signal.h> +#include <linux/syscalls.h> +#include <linux/ratelimit.h> + +#include <asm/esr.h> +#include <asm/fpsimd.h> +#include <asm/signal32_common.h> +#include <asm/signal_common.h> +#include <asm/uaccess.h> +#include <asm/unistd.h> +#include <asm/ucontext.h> + +struct ilp32_rt_sigframe { + struct compat_siginfo info; + struct sigframe sig; +}; + +asmlinkage int ilp32_sys_rt_sigreturn(struct pt_regs *regs) +{ + struct ilp32_rt_sigframe __user *frame; + + /* Always make any pending restarted system calls return -EINTR */ + current->restart_block.fn = do_no_restart_syscall; + + /* + * Since we stacked the signal on a 64-bit boundary, + * then 'sp' should be word aligned here. If it's + * not, then the user is trying to mess with us. + */ + if (regs->sp & 15) + goto badframe; + + frame = (struct ilp32_rt_sigframe __user *)regs->sp; + + if (!access_ok(VERIFY_READ, frame, sizeof (*frame))) + goto badframe; + + if (restore_sigframe(regs, &frame->sig)) + goto badframe; + + if (restore_altstack(&frame->sig.uc.uc_stack)) + goto badframe; + + return regs->regs[0]; + +badframe: + if (show_unhandled_signals) + pr_info_ratelimited("%s[%d]: bad frame in %s: pc=%08llx sp=%08llx\n", + current->comm, task_pid_nr(current), __func__, + regs->pc, regs->compat_sp); + force_sig(SIGSEGV, current); + return 0; +} + +static struct ilp32_rt_sigframe __user *ilp32_get_sigframe(struct ksignal *ksig, + struct pt_regs *regs) +{ + unsigned long sp, sp_top; + struct ilp32_rt_sigframe __user *frame; + + sp = sp_top = sigsp(regs->sp, ksig); + + sp = (sp - sizeof(struct ilp32_rt_sigframe)) & ~15; + frame = (struct ilp32_rt_sigframe __user *)sp; + + /* + * Check that we can actually write to the signal frame. + */ + if (!access_ok(VERIFY_WRITE, frame, sp_top - sp)) + frame = NULL; + + return frame; +} + +/* + * ILP32 signal handling routines called from signal.c + */ +int ilp32_setup_rt_frame(int usig, struct ksignal *ksig, + sigset_t *set, struct pt_regs *regs) +{ + struct ilp32_rt_sigframe __user *frame; + int err = 0; + + frame = ilp32_get_sigframe(ksig, regs); + + if (!frame) + return 1; + + __put_user_error(0, &frame->sig.uc.uc_flags, err); + __put_user_error(NULL, &frame->sig.uc.uc_link, err); + + err |= __save_altstack(&frame->sig.uc.uc_stack, regs->sp); + err |= setup_sigframe(&frame->sig, regs, set); + if (err == 0) { + setup_return(regs, &ksig->ka, frame, + offsetof(struct ilp32_rt_sigframe, sig), usig); + if (ksig->ka.sa.sa_flags & SA_SIGINFO) { + err |= copy_siginfo_to_user32(&frame->info, &ksig->info); + regs->regs[1] = (unsigned long)&frame->info; + regs->regs[2] = (unsigned long)&frame->sig.uc; + } + } + + return err; +} + diff --git a/arch/arm64/kernel/sys_ilp32.c b/arch/arm64/kernel/sys_ilp32.c index c282fa2..1882bb3 100644 --- a/arch/arm64/kernel/sys_ilp32.c +++ b/arch/arm64/kernel/sys_ilp32.c @@ -54,6 +54,9 @@ asmlinkage long compat_sys_fstatfs64_wrapper(void); asmlinkage long compat_sys_statfs64_wrapper(void); #define compat_sys_statfs64 compat_sys_statfs64_wrapper +asmlinkage long ilp32_sys_rt_sigreturn_wrapper(void); +#define compat_sys_rt_sigreturn ilp32_sys_rt_sigreturn_wrapper + #include <asm/syscall.h> #undef __SYSCALL -- 2.5.0
WARNING: multiple messages have this Message-ID (diff)
From: ynorov@caviumnetworks.com (Yury Norov) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v6 17/20] arm64: ilp32: introduce ilp32-specific handlers for sigframe Date: Wed, 16 Dec 2015 00:42:43 +0300 [thread overview] Message-ID: <1450215766-14765-18-git-send-email-ynorov@caviumnetworks.com> (raw) In-Reply-To: <1450215766-14765-1-git-send-email-ynorov@caviumnetworks.com> ILP32 uses AARCH32 compat structures and syscall handlers for signals. But ILP32 struct rt_sigframe differs from both LP64 and AARCH32. So some specific mechanism is needed to take care of it. Signed-off-by: Yury Norov <ynorov@caviumnetworks.com> --- arch/arm64/include/asm/signal_ilp32.h | 38 ++++++++++ arch/arm64/kernel/Makefile | 2 +- arch/arm64/kernel/entry_ilp32.S | 32 +++++++++ arch/arm64/kernel/signal.c | 3 + arch/arm64/kernel/signal_ilp32.c | 126 ++++++++++++++++++++++++++++++++++ arch/arm64/kernel/sys_ilp32.c | 3 + 6 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 arch/arm64/include/asm/signal_ilp32.h create mode 100644 arch/arm64/kernel/entry_ilp32.S create mode 100644 arch/arm64/kernel/signal_ilp32.c diff --git a/arch/arm64/include/asm/signal_ilp32.h b/arch/arm64/include/asm/signal_ilp32.h new file mode 100644 index 0000000..81e1909 --- /dev/null +++ b/arch/arm64/include/asm/signal_ilp32.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2015 Cavium Networks. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef __ASM_SIGNAL_ILP32_H +#define __ASM_SIGNAL_ILP32_H + +#ifdef __KERNEL__ +#ifdef CONFIG_ARM64_ILP32 + +#include <linux/compat.h> + +int ilp32_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set, + struct pt_regs *regs); + +#else + +static inline int ilp32_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set, + struct pt_regs *regs) +{ + return -ENOSYS; +} + +#endif /* CONFIG_ARM64_ILP32 */ + +#endif /* __KERNEL__ */ +#endif /* __ASM_SIGNAL_ILP32_H */ diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile index f90fb08..f92e707 100644 --- a/arch/arm64/kernel/Makefile +++ b/arch/arm64/kernel/Makefile @@ -24,7 +24,7 @@ arm64-obj-$(CONFIG_AARCH32_EL0) += sys32.o kuser32.o signal32.o \ sys_compat.o entry32.o \ ../../arm/kernel/opcodes.o arm64-obj-$(CONFIG_FUNCTION_TRACER) += ftrace.o entry-ftrace.o -arm64-obj-$(CONFIG_ARM64_ILP32) += sys_ilp32.o +arm64-obj-$(CONFIG_ARM64_ILP32) += signal_ilp32.o sys_ilp32.o entry_ilp32.o arm64-obj-$(CONFIG_COMPAT) += entry32-common.o signal32_common.o arm64-obj-$(CONFIG_MODULES) += arm64ksyms.o module.o arm64-obj-$(CONFIG_PERF_EVENTS) += perf_regs.o perf_callchain.o diff --git a/arch/arm64/kernel/entry_ilp32.S b/arch/arm64/kernel/entry_ilp32.S new file mode 100644 index 0000000..424060f --- /dev/null +++ b/arch/arm64/kernel/entry_ilp32.S @@ -0,0 +1,32 @@ +/* + * ILP32 system call wrappers + * + * Copyright (C) 2015 Cavium Networks. + * Author: Yury Norov <ynorov@caviumnetworks.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <linux/linkage.h> +#include <linux/const.h> + +#include <asm/assembler.h> +#include <asm/asm-offsets.h> +#include <asm/errno.h> +#include <asm/page.h> + +ENTRY(ilp32_sys_rt_sigreturn_wrapper) + mov x0, sp + b ilp32_sys_rt_sigreturn +ENDPROC(ilp32_sys_rt_sigreturn_wrapper) + diff --git a/arch/arm64/kernel/signal.c b/arch/arm64/kernel/signal.c index 4b8efe5..d67a9b8 100644 --- a/arch/arm64/kernel/signal.c +++ b/arch/arm64/kernel/signal.c @@ -34,6 +34,7 @@ #include <asm/fpsimd.h> #include <asm/signal32.h> #include <asm/signal_common.h> +#include <asm/signal_ilp32.h> /* * Do a signal return; undo the signal stack. These are aligned to 128-bit. @@ -153,6 +154,8 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) ret = compat_setup_rt_frame(usig, ksig, oldset, regs); else ret = compat_setup_frame(usig, ksig, oldset, regs); + } else if (is_ilp32_compat_task()) { + ret = ilp32_setup_rt_frame(usig, ksig, oldset, regs); } else { ret = setup_rt_frame(usig, ksig, oldset, regs); } diff --git a/arch/arm64/kernel/signal_ilp32.c b/arch/arm64/kernel/signal_ilp32.c new file mode 100644 index 0000000..d38434b --- /dev/null +++ b/arch/arm64/kernel/signal_ilp32.c @@ -0,0 +1,126 @@ +/* + * Based on arch/arm/kernel/signal.c + * + * Copyright (C) 2015 Cavium Networks. + * Yury Norov <ynorov@caviumnetworks.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <linux/compat.h> +#include <linux/signal.h> +#include <linux/syscalls.h> +#include <linux/ratelimit.h> + +#include <asm/esr.h> +#include <asm/fpsimd.h> +#include <asm/signal32_common.h> +#include <asm/signal_common.h> +#include <asm/uaccess.h> +#include <asm/unistd.h> +#include <asm/ucontext.h> + +struct ilp32_rt_sigframe { + struct compat_siginfo info; + struct sigframe sig; +}; + +asmlinkage int ilp32_sys_rt_sigreturn(struct pt_regs *regs) +{ + struct ilp32_rt_sigframe __user *frame; + + /* Always make any pending restarted system calls return -EINTR */ + current->restart_block.fn = do_no_restart_syscall; + + /* + * Since we stacked the signal on a 64-bit boundary, + * then 'sp' should be word aligned here. If it's + * not, then the user is trying to mess with us. + */ + if (regs->sp & 15) + goto badframe; + + frame = (struct ilp32_rt_sigframe __user *)regs->sp; + + if (!access_ok(VERIFY_READ, frame, sizeof (*frame))) + goto badframe; + + if (restore_sigframe(regs, &frame->sig)) + goto badframe; + + if (restore_altstack(&frame->sig.uc.uc_stack)) + goto badframe; + + return regs->regs[0]; + +badframe: + if (show_unhandled_signals) + pr_info_ratelimited("%s[%d]: bad frame in %s: pc=%08llx sp=%08llx\n", + current->comm, task_pid_nr(current), __func__, + regs->pc, regs->compat_sp); + force_sig(SIGSEGV, current); + return 0; +} + +static struct ilp32_rt_sigframe __user *ilp32_get_sigframe(struct ksignal *ksig, + struct pt_regs *regs) +{ + unsigned long sp, sp_top; + struct ilp32_rt_sigframe __user *frame; + + sp = sp_top = sigsp(regs->sp, ksig); + + sp = (sp - sizeof(struct ilp32_rt_sigframe)) & ~15; + frame = (struct ilp32_rt_sigframe __user *)sp; + + /* + * Check that we can actually write to the signal frame. + */ + if (!access_ok(VERIFY_WRITE, frame, sp_top - sp)) + frame = NULL; + + return frame; +} + +/* + * ILP32 signal handling routines called from signal.c + */ +int ilp32_setup_rt_frame(int usig, struct ksignal *ksig, + sigset_t *set, struct pt_regs *regs) +{ + struct ilp32_rt_sigframe __user *frame; + int err = 0; + + frame = ilp32_get_sigframe(ksig, regs); + + if (!frame) + return 1; + + __put_user_error(0, &frame->sig.uc.uc_flags, err); + __put_user_error(NULL, &frame->sig.uc.uc_link, err); + + err |= __save_altstack(&frame->sig.uc.uc_stack, regs->sp); + err |= setup_sigframe(&frame->sig, regs, set); + if (err == 0) { + setup_return(regs, &ksig->ka, frame, + offsetof(struct ilp32_rt_sigframe, sig), usig); + if (ksig->ka.sa.sa_flags & SA_SIGINFO) { + err |= copy_siginfo_to_user32(&frame->info, &ksig->info); + regs->regs[1] = (unsigned long)&frame->info; + regs->regs[2] = (unsigned long)&frame->sig.uc; + } + } + + return err; +} + diff --git a/arch/arm64/kernel/sys_ilp32.c b/arch/arm64/kernel/sys_ilp32.c index c282fa2..1882bb3 100644 --- a/arch/arm64/kernel/sys_ilp32.c +++ b/arch/arm64/kernel/sys_ilp32.c @@ -54,6 +54,9 @@ asmlinkage long compat_sys_fstatfs64_wrapper(void); asmlinkage long compat_sys_statfs64_wrapper(void); #define compat_sys_statfs64 compat_sys_statfs64_wrapper +asmlinkage long ilp32_sys_rt_sigreturn_wrapper(void); +#define compat_sys_rt_sigreturn ilp32_sys_rt_sigreturn_wrapper + #include <asm/syscall.h> #undef __SYSCALL -- 2.5.0
next prev parent reply other threads:[~2015-12-15 21:51 UTC|newest] Thread overview: 156+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-12-15 21:42 [RFC3 PATCH v6 00/20] ILP32 for ARM64 Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 01/20] arm64: ilp32: add documentation on the ILP32 ABI " Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 02/20] arm64: ensure the kernel is compiled for LP64 Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 03/20] arm64: rename COMPAT to AARCH32_EL0 in Kconfig Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-17 11:23 ` Catalin Marinas 2015-12-17 11:23 ` Catalin Marinas 2015-12-15 21:42 ` [PATCH v6 04/20] arm64: change some CONFIG_COMPAT over to use CONFIG_AARCH32_EL0 instead Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-23 14:15 ` Yury Norov 2015-12-23 14:15 ` Yury Norov 2015-12-28 8:43 ` > diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile Bamvor Jian Zhang 2015-12-28 8:43 ` Bamvor Jian Zhang 2015-12-28 9:01 ` [PATCH v6 04/20] arm64: change some CONFIG_COMPAT over to use CONFIG_AARCH32_EL0 instead Zhangjian (Bamvor) 2015-12-28 9:01 ` Zhangjian (Bamvor) 2015-12-29 12:27 ` Yury Norov 2015-12-29 12:27 ` Yury Norov 2015-12-29 14:59 ` [PATCH] arm64: compat: fix wrong dependency Bamvor Jian Zhang 2015-12-29 14:59 ` Bamvor Jian Zhang 2015-12-29 13:12 ` [PATCH v6 04/20] arm64: change some CONFIG_COMPAT over to use CONFIG_AARCH32_EL0 instead Yury Norov 2015-12-29 13:12 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 05/20] arm64:uapi: set __BITS_PER_LONG correctly for ILP32 and LP64 Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 06/20] thread: move thread bits accessors to separated file Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 07/20] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat) Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-17 11:38 ` Catalin Marinas 2015-12-17 11:38 ` Catalin Marinas 2015-12-15 21:42 ` [PATCH v6 08/20] arm64: ilp32: add is_ilp32_compat_{task,thread} and TIF_32BIT_AARCH64 Yury Norov 2015-12-15 21:42 ` [PATCH v6 08/20] arm64: ilp32: add is_ilp32_compat_{task, thread} " Yury Norov 2015-12-17 11:41 ` Catalin Marinas 2015-12-17 11:41 ` Catalin Marinas 2015-12-18 14:11 ` Yury Norov 2015-12-18 14:11 ` Yury Norov 2015-12-18 14:44 ` Yury Norov 2015-12-18 14:44 ` Yury Norov 2015-12-21 17:42 ` Catalin Marinas 2015-12-21 17:42 ` Catalin Marinas 2015-12-15 21:42 ` [PATCH v6 09/20] arm64:ilp32: share HWCAP between LP64 and ILP32 Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-16 15:54 ` Arnd Bergmann 2015-12-16 15:54 ` Arnd Bergmann 2015-12-16 16:58 ` Catalin Marinas 2015-12-16 16:58 ` Catalin Marinas 2015-12-16 17:19 ` Catalin Marinas 2015-12-16 17:19 ` Catalin Marinas 2015-12-16 19:17 ` Arnd Bergmann 2015-12-16 19:17 ` Arnd Bergmann 2015-12-17 10:54 ` Catalin Marinas 2015-12-17 10:54 ` Catalin Marinas 2015-12-17 13:56 ` Arnd Bergmann 2015-12-17 13:56 ` Arnd Bergmann 2015-12-15 21:42 ` [PATCH v6 10/20] arm64:ilp32 use the native LP64 'start_thread' for ILP32 threads Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-16 15:50 ` Arnd Bergmann 2015-12-16 15:50 ` Arnd Bergmann 2015-12-18 13:57 ` Yury Norov 2015-12-18 13:57 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 11/20] arm64:ilp32: support core dump generation for ILP32 Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-17 14:05 ` Catalin Marinas 2015-12-17 14:05 ` Catalin Marinas 2015-12-15 21:42 ` [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-16 16:07 ` Arnd Bergmann 2015-12-16 16:07 ` Arnd Bergmann 2015-12-17 18:27 ` Catalin Marinas 2015-12-17 18:27 ` Catalin Marinas 2015-12-17 20:10 ` Arnd Bergmann 2015-12-17 20:10 ` Arnd Bergmann 2015-12-17 20:14 ` Andrew Pinski 2015-12-17 20:14 ` Andrew Pinski 2015-12-17 20:50 ` Arnd Bergmann 2015-12-17 20:50 ` Arnd Bergmann 2016-01-05 15:26 ` Yury Norov 2016-01-05 15:26 ` Yury Norov 2016-01-05 21:12 ` Arnd Bergmann 2016-01-05 21:12 ` Arnd Bergmann 2016-01-06 17:10 ` Catalin Marinas 2016-01-06 17:10 ` Catalin Marinas 2016-01-07 14:13 ` Arnd Bergmann 2016-01-07 14:13 ` Arnd Bergmann 2016-01-07 15:42 ` Yury Norov 2016-01-07 15:42 ` Yury Norov 2016-01-07 17:23 ` Catalin Marinas 2016-01-07 17:23 ` Catalin Marinas 2015-12-18 11:42 ` Catalin Marinas 2015-12-18 11:42 ` Catalin Marinas 2015-12-18 12:47 ` Arnd Bergmann 2015-12-18 12:47 ` Arnd Bergmann 2015-12-21 18:31 ` Catalin Marinas 2015-12-21 18:31 ` Catalin Marinas 2015-12-21 22:19 ` Arnd Bergmann 2015-12-21 22:19 ` Arnd Bergmann 2015-12-21 18:39 ` Dr. Philipp Tomsich 2015-12-21 18:39 ` Dr. Philipp Tomsich 2015-12-21 22:13 ` Arnd Bergmann 2015-12-21 22:13 ` Arnd Bergmann 2015-12-21 22:31 ` Arnd Bergmann 2015-12-21 22:31 ` Arnd Bergmann 2015-12-23 18:31 ` Yury Norov 2015-12-23 18:31 ` Yury Norov 2015-12-23 21:48 ` Arnd Bergmann 2015-12-23 21:48 ` Arnd Bergmann 2015-12-15 21:42 ` [PATCH v6 13/20] arm64: ilp32: share aarch32 syscall wrappers to ilp32 Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-17 14:38 ` Andreas Schwab 2015-12-17 14:38 ` Andreas Schwab 2015-12-18 13:49 ` Yury Norov 2015-12-18 13:49 ` Yury Norov 2015-12-22 12:25 ` Catalin Marinas 2015-12-22 12:25 ` Catalin Marinas 2015-12-22 21:44 ` Arnd Bergmann 2015-12-22 21:44 ` Arnd Bergmann 2015-12-23 13:37 ` Catalin Marinas 2015-12-23 13:37 ` Catalin Marinas 2015-12-23 20:41 ` Arnd Bergmann 2015-12-23 20:41 ` Arnd Bergmann 2015-12-30 17:29 ` Yury Norov 2015-12-30 17:29 ` Yury Norov 2015-12-30 22:36 ` Arnd Bergmann 2015-12-30 22:36 ` Arnd Bergmann 2015-12-23 4:21 ` Yury Norov 2015-12-23 4:21 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 14/20] arm64: signal: wrap struct ucontext, fp and lr with struct sigframe Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 15/20] arm64: signal: move ilp32 and lp64 common code to separated file Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-16 16:08 ` Arnd Bergmann 2015-12-16 16:08 ` Arnd Bergmann 2015-12-18 13:48 ` Yury Norov 2015-12-18 13:48 ` Yury Norov 2015-12-18 14:09 ` Arnd Bergmann 2015-12-18 14:09 ` Arnd Bergmann 2015-12-22 17:11 ` Catalin Marinas 2015-12-22 17:11 ` Catalin Marinas 2015-12-15 21:42 ` [PATCH v6 16/20] arm64: signal32: move ilp32 and aarch32 " Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-22 14:29 ` Catalin Marinas 2015-12-22 14:29 ` Catalin Marinas 2015-12-15 21:42 ` Yury Norov [this message] 2015-12-15 21:42 ` [PATCH v6 17/20] arm64: ilp32: introduce ilp32-specific handlers for sigframe Yury Norov 2015-12-22 17:08 ` Catalin Marinas 2015-12-22 17:08 ` Catalin Marinas 2015-12-15 21:42 ` [PATCH v6 18/20] arm64:ilp32: add vdso-ilp32 and use for signal return Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 19/20] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32 Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 20/20] arm64:ilp32: add ARM64_ILP32 to Kconfig Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-16 16:24 ` [RFC3 PATCH v6 00/20] ILP32 for ARM64 Arnd Bergmann 2015-12-16 16:24 ` Arnd Bergmann
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1450215766-14765-18-git-send-email-ynorov@caviumnetworks.com \ --to=ynorov@caviumnetworks.com \ --cc=Nathan_Lynch@mentor.com \ --cc=Prasun.Kapoor@caviumnetworks.com \ --cc=agraf@suse.de \ --cc=arnd@arndb.de \ --cc=bamvor.zhangjian@huawei.com \ --cc=broonie@kernel.org \ --cc=catalin.marinas@arm.com \ --cc=christoph.muellner@theobroma-systems.com \ --cc=ddaney.cavm@gmail.com \ --cc=jan.dakinevich@gmail.com \ --cc=joseph@codesourcery.com \ --cc=klimov.linux@gmail.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=philipp.tomsich@theobroma-systems.com \ --cc=pinskia@gmail.com \ --cc=schwab@suse.de \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.