aboutsummaryrefslogtreecommitdiff
path: root/meta-aarch64/recipes-kernel/linux-libc-headers/linux-libc-headers/0014-ARM64-ILP32-use-the-standard-start_thread-for-ILP32-.patch
diff options
context:
space:
mode:
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-.patch39
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
+