diff options
Diffstat (limited to 'arch/blackfin/kernel/process.c')
-rw-r--r-- | arch/blackfin/kernel/process.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c index 326e3019cd23..4359ea253010 100644 --- a/arch/blackfin/kernel/process.c +++ b/arch/blackfin/kernel/process.c | |||
@@ -171,6 +171,13 @@ asmlinkage int bfin_clone(struct pt_regs *regs) | |||
171 | unsigned long clone_flags; | 171 | unsigned long clone_flags; |
172 | unsigned long newsp; | 172 | unsigned long newsp; |
173 | 173 | ||
174 | #ifdef __ARCH_SYNC_CORE_DCACHE | ||
175 | if (current->rt.nr_cpus_allowed == num_possible_cpus()) { | ||
176 | current->cpus_allowed = cpumask_of_cpu(smp_processor_id()); | ||
177 | current->rt.nr_cpus_allowed = 1; | ||
178 | } | ||
179 | #endif | ||
180 | |||
174 | /* syscall2 puts clone_flags in r0 and usp in r1 */ | 181 | /* syscall2 puts clone_flags in r0 and usp in r1 */ |
175 | clone_flags = regs->r0; | 182 | clone_flags = regs->r0; |
176 | newsp = regs->r1; | 183 | newsp = regs->r1; |
@@ -338,22 +345,22 @@ int _access_ok(unsigned long addr, unsigned long size) | |||
338 | if (addr >= (unsigned long)__init_begin && | 345 | if (addr >= (unsigned long)__init_begin && |
339 | addr + size <= (unsigned long)__init_end) | 346 | addr + size <= (unsigned long)__init_end) |
340 | return 1; | 347 | return 1; |
341 | if (addr >= L1_SCRATCH_START | 348 | if (addr >= get_l1_scratch_start() |
342 | && addr + size <= L1_SCRATCH_START + L1_SCRATCH_LENGTH) | 349 | && addr + size <= get_l1_scratch_start() + L1_SCRATCH_LENGTH) |
343 | return 1; | 350 | return 1; |
344 | #if L1_CODE_LENGTH != 0 | 351 | #if L1_CODE_LENGTH != 0 |
345 | if (addr >= L1_CODE_START + (_etext_l1 - _stext_l1) | 352 | if (addr >= get_l1_code_start() + (_etext_l1 - _stext_l1) |
346 | && addr + size <= L1_CODE_START + L1_CODE_LENGTH) | 353 | && addr + size <= get_l1_code_start() + L1_CODE_LENGTH) |
347 | return 1; | 354 | return 1; |
348 | #endif | 355 | #endif |
349 | #if L1_DATA_A_LENGTH != 0 | 356 | #if L1_DATA_A_LENGTH != 0 |
350 | if (addr >= L1_DATA_A_START + (_ebss_l1 - _sdata_l1) | 357 | if (addr >= get_l1_data_a_start() + (_ebss_l1 - _sdata_l1) |
351 | && addr + size <= L1_DATA_A_START + L1_DATA_A_LENGTH) | 358 | && addr + size <= get_l1_data_a_start() + L1_DATA_A_LENGTH) |
352 | return 1; | 359 | return 1; |
353 | #endif | 360 | #endif |
354 | #if L1_DATA_B_LENGTH != 0 | 361 | #if L1_DATA_B_LENGTH != 0 |
355 | if (addr >= L1_DATA_B_START + (_ebss_b_l1 - _sdata_b_l1) | 362 | if (addr >= get_l1_data_b_start() + (_ebss_b_l1 - _sdata_b_l1) |
356 | && addr + size <= L1_DATA_B_START + L1_DATA_B_LENGTH) | 363 | && addr + size <= get_l1_data_b_start() + L1_DATA_B_LENGTH) |
357 | return 1; | 364 | return 1; |
358 | #endif | 365 | #endif |
359 | #if L2_LENGTH != 0 | 366 | #if L2_LENGTH != 0 |