Re: [PATCH 13/23] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 2016/6/12 20:21, Zhangjian (Bamvor) wrote:
Hi, Yury

On 2016/5/24 8:04, Yury Norov wrote:
Based on patch of Andrew Pinski.

This patch introduces is_a32_compat_task and is_a32_thread so it is
easier to say this is a a32 specific thread or a generic compat thread/task.
Corresponding functions are located in <asm/is_compat.h> to avoid mess in
headers.

Some files include both <linux/compat.h> and <asm/compat.h>,
and this is wrong because <linux/compat.h> has <asm/compat.h> already
included. It was fixed too.

Signed-off-by: Yury Norov <ynorov@xxxxxxxxxxxxxxxxxx>
Signed-off-by: Philipp Tomsich <philipp.tomsich@xxxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Christoph Muellner <christoph.muellner@xxxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Andrew Pinski <Andrew.Pinski@xxxxxxxxxxxxxxxxxx>
Reviewed-by: David Daney <ddaney@xxxxxxxxxxxxxxxxxx>
---
  arch/arm64/include/asm/compat.h      | 19 ++----------
  arch/arm64/include/asm/elf.h         | 10 +++----
  arch/arm64/include/asm/ftrace.h      |  2 +-
  arch/arm64/include/asm/is_compat.h   | 58 ++++++++++++++++++++++++++++++++++++
  arch/arm64/include/asm/memory.h      |  3 +-
  arch/arm64/include/asm/processor.h   |  5 ++--
  arch/arm64/include/asm/syscall.h     |  2 +-
  arch/arm64/include/asm/thread_info.h |  2 +-
  arch/arm64/kernel/hw_breakpoint.c    | 10 +++----
  arch/arm64/kernel/perf_regs.c        |  2 +-
  arch/arm64/kernel/process.c          |  7 ++---
  arch/arm64/kernel/ptrace.c           | 11 ++++---
  arch/arm64/kernel/signal.c           |  4 +--
  arch/arm64/kernel/traps.c            |  3 +-
  14 files changed, 91 insertions(+), 47 deletions(-)
  create mode 100644 arch/arm64/include/asm/is_compat.h

[...]
diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
index 12f8a00..a66a0f7 100644
--- a/arch/arm64/include/asm/memory.h
+++ b/arch/arm64/include/asm/memory.h
@@ -26,6 +26,7 @@
  #include <linux/types.h>
  #include <asm/bug.h>
  #include <asm/sizes.h>
+#include <asm/is_compat.h>

  /*
   * Allow for constants defined here to be used from assembly code
@@ -61,7 +62,7 @@

  #ifdef CONFIG_COMPAT
  #define TASK_SIZE_32        UL(0x100000000)
-#define TASK_SIZE        (test_thread_flag(TIF_32BIT) ? \
+#define TASK_SIZE        (is_compat_task() ?        \
                  TASK_SIZE_32 : TASK_SIZE_64)
  #define TASK_SIZE_OF(tsk)    (test_tsk_thread_flag(tsk, TIF_32BIT) ? \
                  TASK_SIZE_32 : TASK_SIZE_64)
Should we update or delete this macro?
  #define TASK_SIZE_OF(tsk) (is_compat_task() ? \
TASK_SIZE_32 : TASK_SIZE_64)
Sorry it should be:
#define TASK_SIZE_OF(tsk)       ((is_a32_compat_thread(task_thread_info(tsk)) \
                                  || is_ilp32_compat_thread(task_thread_info(tsk))) ? \
                                TASK_SIZE_32 : TASK_SIZE_64)

x86, sparc, mips, ppc, parisc, s390 define its own version. But
"include/linux/sched.h" will define it if
TASK_SIZE_OF does not exist:
#ifndef TASK_SIZE_OF
#define TASK_SIZE_OF(tsk)       TASK_SIZE
#endif


Regards

Bamvor


--
To unsubscribe from this list: send the line "unsubscribe linux-arch" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux