diff options
| author | Anton Altaparmakov <aia21@cantab.net> | 2006-01-19 11:39:33 -0500 | 
|---|---|---|
| committer | Anton Altaparmakov <aia21@cantab.net> | 2006-01-19 11:39:33 -0500 | 
| commit | 944d79559d154c12becde0dab327016cf438f46c (patch) | |
| tree | 50c101806f4d3b6585222dda060559eb4f3e005a /include/asm-arm/processor.h | |
| parent | d087e4bdd24ebe3ae3d0b265b6573ec901af4b4b (diff) | |
| parent | 0f36b018b2e314d45af86449f1a97facb1fbe300 (diff) | |
Merge branch 'master' of /usr/src/ntfs-2.6/
Diffstat (limited to 'include/asm-arm/processor.h')
| -rw-r--r-- | include/asm-arm/processor.h | 15 | 
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 | */ | 
| 86 | extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); | 93 | extern 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. | 
