smp.c (c58310bf4933986513020fa90b4190c7492995ae) | smp.c (39b8d5254246ac56342b72f812255c8f7a74dca9) |
---|---|
1/* 2 * This program is free software; you can redistribute it and/or 3 * modify it under the terms of the GNU General Public License 4 * as published by the Free Software Foundation; either version 2 5 * of the License, or (at your option) any later version. 6 * 7 * This program is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of --- 21 unchanged lines hidden (view full) --- 30#include <linux/sched.h> 31#include <linux/cpumask.h> 32#include <linux/cpu.h> 33#include <linux/err.h> 34 35#include <asm/atomic.h> 36#include <asm/cpu.h> 37#include <asm/processor.h> | 1/* 2 * This program is free software; you can redistribute it and/or 3 * modify it under the terms of the GNU General Public License 4 * as published by the Free Software Foundation; either version 2 5 * of the License, or (at your option) any later version. 6 * 7 * This program is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of --- 21 unchanged lines hidden (view full) --- 30#include <linux/sched.h> 31#include <linux/cpumask.h> 32#include <linux/cpu.h> 33#include <linux/err.h> 34 35#include <asm/atomic.h> 36#include <asm/cpu.h> 37#include <asm/processor.h> |
38#include <asm/r4k-timer.h> |
|
38#include <asm/system.h> 39#include <asm/mmu_context.h> 40#include <asm/time.h> 41 42#ifdef CONFIG_MIPS_MT_SMTC 43#include <asm/mipsmtregs.h> 44#endif /* CONFIG_MIPS_MT_SMTC */ 45 --- 74 unchanged lines hidden (view full) --- 120 cpu = smp_processor_id(); 121 cpu_data[cpu].udelay_val = loops_per_jiffy; 122 123 mp_ops->smp_finish(); 124 set_cpu_sibling_map(cpu); 125 126 cpu_set(cpu, cpu_callin_map); 127 | 39#include <asm/system.h> 40#include <asm/mmu_context.h> 41#include <asm/time.h> 42 43#ifdef CONFIG_MIPS_MT_SMTC 44#include <asm/mipsmtregs.h> 45#endif /* CONFIG_MIPS_MT_SMTC */ 46 --- 74 unchanged lines hidden (view full) --- 121 cpu = smp_processor_id(); 122 cpu_data[cpu].udelay_val = loops_per_jiffy; 123 124 mp_ops->smp_finish(); 125 set_cpu_sibling_map(cpu); 126 127 cpu_set(cpu, cpu_callin_map); 128 |
129 synchronise_count_slave(); 130 |
|
128 cpu_idle(); 129} 130 131DEFINE_SPINLOCK(smp_call_lock); 132 133struct call_data_struct *call_data; 134 135/* --- 146 unchanged lines hidden (view full) --- 282void smp_send_stop(void) 283{ 284 smp_call_function(stop_this_cpu, NULL, 1, 0); 285} 286 287void __init smp_cpus_done(unsigned int max_cpus) 288{ 289 mp_ops->cpus_done(); | 131 cpu_idle(); 132} 133 134DEFINE_SPINLOCK(smp_call_lock); 135 136struct call_data_struct *call_data; 137 138/* --- 146 unchanged lines hidden (view full) --- 285void smp_send_stop(void) 286{ 287 smp_call_function(stop_this_cpu, NULL, 1, 0); 288} 289 290void __init smp_cpus_done(unsigned int max_cpus) 291{ 292 mp_ops->cpus_done(); |
293 synchronise_count_master(); |
|
290} 291 292/* called from main before smp_init() */ 293void __init smp_prepare_cpus(unsigned int max_cpus) 294{ 295 init_new_context(current, &init_mm); 296 current_thread_info()->cpu = 0; 297 mp_ops->prepare_cpus(max_cpus); --- 231 unchanged lines hidden --- | 294} 295 296/* called from main before smp_init() */ 297void __init smp_prepare_cpus(unsigned int max_cpus) 298{ 299 init_new_context(current, &init_mm); 300 current_thread_info()->cpu = 0; 301 mp_ops->prepare_cpus(max_cpus); --- 231 unchanged lines hidden --- |