aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-arm/processor.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-arm/processor.h')
-rw-r--r--include/asm-arm/processor.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/include/asm-arm/processor.h b/include/asm-arm/processor.h
index 7d4118e09054..04f4d34c6317 100644
--- a/include/asm-arm/processor.h
+++ b/include/asm-arm/processor.h
@@ -49,6 +49,12 @@ struct thread_struct {
49 49
50#define INIT_THREAD { } 50#define INIT_THREAD { }
51 51
52#ifdef CONFIG_MMU
53#define nommu_start_thread(regs) do { } while (0)
54#else
55#define nommu_start_thread(regs) regs->ARM_r10 = current->mm->start_data
56#endif
57
52#define start_thread(regs,pc,sp) \ 58#define start_thread(regs,pc,sp) \
53({ \ 59({ \
54 unsigned long *stack = (unsigned long *)sp; \ 60 unsigned long *stack = (unsigned long *)sp; \
@@ -65,6 +71,7 @@ struct thread_struct {
65 regs->ARM_r2 = stack[2]; /* r2 (envp) */ \ 71 regs->ARM_r2 = stack[2]; /* r2 (envp) */ \
66 regs->ARM_r1 = stack[1]; /* r1 (argv) */ \ 72 regs->ARM_r1 = stack[1]; /* r1 (argv) */ \
67 regs->ARM_r0 = stack[0]; /* r0 (argc) */ \ 73 regs->ARM_r0 = stack[0]; /* r0 (argc) */ \
74 nommu_start_thread(regs); \
68}) 75})
69 76
70/* Forward declaration, a strange C thing */ 77/* Forward declaration, a strange C thing */
@@ -85,9 +92,11 @@ unsigned long get_wchan(struct task_struct *p);
85 */ 92 */
86extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); 93extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
87 94
88#define KSTK_REGS(tsk) (((struct pt_regs *)(THREAD_START_SP + (unsigned long)(tsk)->thread_info)) - 1) 95#define task_pt_regs(p) \
89#define KSTK_EIP(tsk) KSTK_REGS(tsk)->ARM_pc 96 ((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
90#define KSTK_ESP(tsk) KSTK_REGS(tsk)->ARM_sp 97
98#define KSTK_EIP(tsk) task_pt_regs(tsk)->ARM_pc
99#define KSTK_ESP(tsk) task_pt_regs(tsk)->ARM_sp
91 100
92/* 101/*
93 * Prefetching support - only ARMv5. 102 * Prefetching support - only ARMv5.