x86 arch的boot_cpu_id变量是如何初始化的
丸泥斗 2010-10-12 03:43:32 全部source tree的搜索结果如下:
[richard@PerfectLinux linux-2.6.35-rc2]$ find -type f|xargs grep "boot_cpu_id" -wn
./arch/alpha/kernel/smp.c:636: if (hard_smp_processor_id() != boot_cpu_id)
./arch/ia64/kernel/smpboot.c:579: int boot_cpu_id = hard_smp_processor_id();
./arch/ia64/kernel/smpboot.c:585: ia64_cpu_to_sapicid[0] = boot_cpu_id;
./arch/ia64/kernel/smpboot.c:591: if (sapicid == boot_cpu_id)
./arch/ia64/kernel/smpboot.c:606: int boot_cpu_id = hard_smp_processor_id();
./arch/ia64/kernel/smpboot.c:621: ia64_cpu_to_sapicid[0] = boot_cpu_id;
./arch/ia64/kernel/smpboot.c:623: printk(KERN_INFO "Boot processor id 0x%x/0x%x\n", 0, boot_cpu_id);
./arch/sparc/include/asm/smp_32.h:31:extern unsigned char boot_cpu_id;
./arch/sparc/include/asm/smp_32.h:135: "sethi %%hi(boot_cpu_id), %0\n\t"
./arch/sparc/include/asm/smp_32.h:136: "ldub [%0 + %%lo(boot_cpu_id)], %0\n\t" :
./arch/sparc/kernel/head_32.S:820: sethi %hi(boot_cpu_id), %g1 ! master always 0
./arch/sparc/kernel/head_32.S:821: stb %g0, [%g1 + %lo(boot_cpu_id)]
./arch/sparc/kernel/head_32.S:895: sethi %hi(boot_cpu_id), %g5
./arch/sparc/kernel/head_32.S:896: stb %g4, [%g5 + %lo(boot_cpu_id)]
./arch/sparc/kernel/head_32.S:1029: * But first make current_set[boot_cpu_id] point to something useful.
./arch/sparc/kernel/leon_smp.c:52:extern unsigned char boot_cpu_id;
./arch/sparc/kernel/smp_32.c:40:unsigned char boot_cpu_id = 0;
./arch/sparc/kernel/smp_32.c:41:unsigned char boot_cpu_id4 = 0; /* boot_cpu_id << 2 */
./arch/sparc/kernel/smp_32.c:296: smp_store_cpu_info(boot_cpu_id);
./arch/sparc/kernel/sun4d_irq.c:399: if ((board * 2) == boot_cpu_id && cpu_isset(board * 2 + 1, cpu_present_map))
./arch/sparc/kernel/sun4d_irq.c:547: target_cpu = boot_cpu_id;
./arch/sparc/kernel/sun4d_smp.c:48:extern unsigned char boot_cpu_id;
./arch/sparc/kernel/sun4d_smp.c:168: if (boot_cpu_id)
./arch/sparc/kernel/sun4m_smp.c:43:extern unsigned char boot_cpu_id;
./arch/sparc/kernel/sun4m_smp.c:326: if(cpu == boot_cpu_id)
./arch/x86/include/asm/apb_timer.h:57:extern unsigned int boot_cpu_id;
./arch/x86/include/asm/cpu.h:35:extern unsigned int boot_cpu_id;
./arch/x86/kernel/apb_timer.c:370: if (cpu == boot_cpu_id)
./arch/x86/kernel/apic/io_apic.c:165: node= cpu_to_node(boot_cpu_id);
./arch/x86/kernel/apic/io_apic.c:1486: int node = cpu_to_node(boot_cpu_id);
./arch/x86/kernel/apic/io_apic.c:1551: int node = cpu_to_node(boot_cpu_id);
./arch/x86/kernel/apic/io_apic.c:2928: int node = cpu_to_node(boot_cpu_id);
./arch/x86/kernel/apic/io_apic.c:3282: int node = cpu_to_node(boot_cpu_id);
./arch/x86/kernel/apic/io_apic.c:3904: node = cpu_to_node(boot_cpu_id);
./arch/x86/kernel/cpu/amd.c:151: if (c->cpu_index == boot_cpu_id)
./arch/x86/kernel/cpu/common.c:649: c->cpu_index = boot_cpu_id;
./arch/x86/kernel/cpu/common.c:1258: if (smp_processor_id() == boot_cpu_id)
./arch/x86/kernel/cpu/intel.c:172: if (c->cpu_index == boot_cpu_id)
./arch/x86/kernel/reboot.c:87: have set up boot_cpu_id or smp_num_cpu */
./arch/x86/kernel/setup.c:127:unsigned int boot_cpu_id __read_mostly;
./arch/x86/kernel/setup_percpu.c:247: if (cpu == boot_cpu_id)
./arch/x86/kernel/setup_percpu.c:265: set_cpu_numa_node(boot_cpu_id, early_cpu_to_node(boot_cpu_id));
./arch/x86/mm/k8topology_64.c:57: * need to get boot_cpu_id so can use that to create apicid_to_node
./arch/x86/mm/k8topology_64.c:215: /* need to get boot_cpu_id early for system with apicid lifting */
[richard@PerfectLinux linux-2.6.35-rc2]$
就是看不到赋值的地方,很奇怪呀!