linux/arch/x86/kernel/smpcommon.c
<<
>>
Prefs
   1/*
   2 * SMP stuff which is common to all sub-architectures.
   3 */
   4#include <linux/module.h>
   5#include <asm/smp.h>
   6
   7#ifdef CONFIG_X86_32
   8DEFINE_PER_CPU(unsigned long, this_cpu_off);
   9EXPORT_PER_CPU_SYMBOL(this_cpu_off);
  10
  11/*
  12 * Initialize the CPU's GDT.  This is either the boot CPU doing itself
  13 * (still using the master per-cpu area), or a CPU doing it for a
  14 * secondary which will soon come up.
  15 */
  16__cpuinit void init_gdt(int cpu)
  17{
  18        struct desc_struct gdt;
  19
  20        pack_descriptor(&gdt, __per_cpu_offset[cpu], 0xFFFFF,
  21                        0x2 | DESCTYPE_S, 0x8);
  22        gdt.s = 1;
  23
  24        write_gdt_entry(get_cpu_gdt_table(cpu),
  25                        GDT_ENTRY_PERCPU, &gdt, DESCTYPE_S);
  26
  27        per_cpu(this_cpu_off, cpu) = __per_cpu_offset[cpu];
  28        per_cpu(cpu_number, cpu) = cpu;
  29}
  30#endif
  31
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.