diff options
Diffstat (limited to 'meta-aarch64/recipes-kernel/linux-libc-headers/linux-libc-headers/0014-ARM64-ILP32-use-the-standard-start_thread-for-ILP32-.patch')
-rw-r--r-- | meta-aarch64/recipes-kernel/linux-libc-headers/linux-libc-headers/0014-ARM64-ILP32-use-the-standard-start_thread-for-ILP32-.patch | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/meta-aarch64/recipes-kernel/linux-libc-headers/linux-libc-headers/0014-ARM64-ILP32-use-the-standard-start_thread-for-ILP32-.patch b/meta-aarch64/recipes-kernel/linux-libc-headers/linux-libc-headers/0014-ARM64-ILP32-use-the-standard-start_thread-for-ILP32-.patch new file mode 100644 index 00000000..477f93c1 --- /dev/null +++ b/meta-aarch64/recipes-kernel/linux-libc-headers/linux-libc-headers/0014-ARM64-ILP32-use-the-standard-start_thread-for-ILP32-.patch @@ -0,0 +1,39 @@ +From f2211ab8a3053b89db4ec8d1e9dbe8a2eaebde3b Mon Sep 17 00:00:00 2001 +From: Andrew Pinski <apinski@cavium.com> +Date: Wed, 3 Sep 2014 14:19:08 -0700 +Subject: [PATCH 14/25] ARM64:ILP32 use the standard start_thread for ILP32 so + the processor state is not AARCH32 + +If we have both ILP32 and AARCH32 compiled in, we need use the non compat start +thread for ILP32. + +Signed-off-by: Andrew Pinski <apinski@cavium.com> +--- + arch/arm64/include/asm/processor.h | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h +index 286b1be..7bd9f32 100644 +--- a/arch/arm64/include/asm/processor.h ++++ b/arch/arm64/include/asm/processor.h +@@ -104,6 +104,17 @@ static inline void start_thread(struct pt_regs *regs, unsigned long pc, + static inline void compat_start_thread(struct pt_regs *regs, unsigned long pc, + unsigned long sp) + { ++#ifdef CONFIG_ARM64_ILP32 ++ /* ++ * ILP32 thread are started the same way as LP64 threads. ++ * Note we cannot use is_ilp32_compat_task here as that ++ * would introduce a header depency issue. ++ */ ++ if (!test_thread_flag(TIF_AARCH32)) { ++ start_thread(regs, pc, sp); ++ return; ++ } ++#endif + start_thread_common(regs, pc); + regs->pstate = COMPAT_PSR_MODE_USR; + if (pc & 1) +-- +1.9.3 + |