diff options
Diffstat (limited to 'arch/blackfin/include/asm/processor.h')
-rw-r--r-- | arch/blackfin/include/asm/processor.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/blackfin/include/asm/processor.h b/arch/blackfin/include/asm/processor.h index 83d57a85b14f..0eece23b41c7 100644 --- a/arch/blackfin/include/asm/processor.h +++ b/arch/blackfin/include/asm/processor.h | |||
@@ -65,6 +65,7 @@ struct thread_struct { | |||
65 | * pass the data segment into user programs if it exists, | 65 | * pass the data segment into user programs if it exists, |
66 | * it can't hurt anything as far as I can tell | 66 | * it can't hurt anything as far as I can tell |
67 | */ | 67 | */ |
68 | #ifndef CONFIG_SMP | ||
68 | #define start_thread(_regs, _pc, _usp) \ | 69 | #define start_thread(_regs, _pc, _usp) \ |
69 | do { \ | 70 | do { \ |
70 | set_fs(USER_DS); \ | 71 | set_fs(USER_DS); \ |
@@ -78,6 +79,16 @@ do { \ | |||
78 | sizeof(*L1_SCRATCH_TASK_INFO)); \ | 79 | sizeof(*L1_SCRATCH_TASK_INFO)); \ |
79 | wrusp(_usp); \ | 80 | wrusp(_usp); \ |
80 | } while(0) | 81 | } while(0) |
82 | #else | ||
83 | #define start_thread(_regs, _pc, _usp) \ | ||
84 | do { \ | ||
85 | set_fs(USER_DS); \ | ||
86 | (_regs)->pc = (_pc); \ | ||
87 | if (current->mm) \ | ||
88 | (_regs)->p5 = current->mm->start_data; \ | ||
89 | wrusp(_usp); \ | ||
90 | } while (0) | ||
91 | #endif | ||
81 | 92 | ||
82 | /* Forward declaration, a strange C thing */ | 93 | /* Forward declaration, a strange C thing */ |
83 | struct task_struct; | 94 | struct task_struct; |