arm64: factor out current_stack_pointer
authorMark Rutland <mark.rutland@arm.com>
Thu, 3 Nov 2016 20:23:05 +0000 (20:23 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Fri, 11 Nov 2016 18:25:43 +0000 (18:25 +0000)
We define current_stack_pointer in <asm/thread_info.h>, though other
files and header relying upon it do not have this necessary include, and
are thus fragile to changes in the header soup.

Subsequent patches will affect the header soup such that directly
including <asm/thread_info.h> may result in a circular header include in
some of these cases, so we can't simply include <asm/thread_info.h>.

Instead, factor current_thread_info into its own header, and have all
existing users include this explicitly.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Tested-by: Laura Abbott <labbott@redhat.com>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/include/asm/percpu.h
arch/arm64/include/asm/perf_event.h
arch/arm64/include/asm/stack_pointer.h [new file with mode: 0644]
arch/arm64/include/asm/thread_info.h
arch/arm64/kernel/return_address.c
arch/arm64/kernel/stacktrace.c
arch/arm64/kernel/traps.c

index 4afb6fcc85cec2843aa847e9f364e55f59127e0f..3bd498e4de4cf298c8a24bb5e97e235ebed17245 100644 (file)
@@ -16,6 +16,8 @@
 #ifndef __ASM_PERCPU_H
 #define __ASM_PERCPU_H
 
+#include <asm/stack_pointer.h>
+
 static inline void set_my_cpu_offset(unsigned long off)
 {
        asm volatile("msr tpidr_el1, %0" :: "r" (off) : "memory");
index 2065f46fa7407deb4d43e7dc8783ca8667759500..9eee2beb4dbc19d8ee1955f008dbcfe3fbda76fc 100644 (file)
@@ -17,6 +17,8 @@
 #ifndef __ASM_PERF_EVENT_H
 #define __ASM_PERF_EVENT_H
 
+#include <asm/stack_pointer.h>
+
 #define        ARMV8_PMU_MAX_COUNTERS  32
 #define        ARMV8_PMU_COUNTER_MASK  (ARMV8_PMU_MAX_COUNTERS - 1)
 
diff --git a/arch/arm64/include/asm/stack_pointer.h b/arch/arm64/include/asm/stack_pointer.h
new file mode 100644 (file)
index 0000000..ffcdf74
--- /dev/null
@@ -0,0 +1,9 @@
+#ifndef __ASM_STACK_POINTER_H
+#define __ASM_STACK_POINTER_H
+
+/*
+ * how to get the current stack pointer from C
+ */
+register unsigned long current_stack_pointer asm ("sp");
+
+#endif /* __ASM_STACK_POINTER_H */
index 6ad76efbb3aa5dcf00fab3801aa3f34ca294676f..bce0f07483c10c85d4428addce812f6e4525f0ad 100644 (file)
@@ -36,6 +36,7 @@
 
 struct task_struct;
 
+#include <asm/stack_pointer.h>
 #include <asm/types.h>
 
 typedef unsigned long mm_segment_t;
@@ -61,11 +62,6 @@ struct thread_info {
 
 #define init_stack             (init_thread_union.stack)
 
-/*
- * how to get the current stack pointer from C
- */
-register unsigned long current_stack_pointer asm ("sp");
-
 /*
  * how to get the thread information struct from C
  */
index 1718706fde83604f78d81d850bf8827705338f1a..12a87f2600f2f65d03799a44402eabda5024277e 100644 (file)
@@ -12,6 +12,7 @@
 #include <linux/export.h>
 #include <linux/ftrace.h>
 
+#include <asm/stack_pointer.h>
 #include <asm/stacktrace.h>
 
 struct return_address_data {
index c2efddfca18cd476a98b46e445bf9fe1592beea5..5b8006819cdec6eba2e489aa9c3be088bada7a0a 100644 (file)
@@ -22,6 +22,7 @@
 #include <linux/stacktrace.h>
 
 #include <asm/irq.h>
+#include <asm/stack_pointer.h>
 #include <asm/stacktrace.h>
 
 /*
index c9986b3e0a96f9ddd0d79ad52e0d5de7841172ec..95a545200a52252a6b9ba8108af712d53e86dd20 100644 (file)
@@ -38,6 +38,7 @@
 #include <asm/esr.h>
 #include <asm/insn.h>
 #include <asm/traps.h>
+#include <asm/stack_pointer.h>
 #include <asm/stacktrace.h>
 #include <asm/exception.h>
 #include <asm/system_misc.h>