git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
arch
/
alpha
/
kernel
/
smp.c
diff --git
a/arch/alpha/kernel/smp.c
b/arch/alpha/kernel/smp.c
index
4dc273e
..
d1ec4f5
100644
(file)
--- a/
arch/alpha/kernel/smp.c
+++ b/
arch/alpha/kernel/smp.c
@@
-52,6
+52,7
@@
/* A collection of per-processor data. */
struct cpuinfo_alpha cpu_data[NR_CPUS];
/* A collection of per-processor data. */
struct cpuinfo_alpha cpu_data[NR_CPUS];
+EXPORT_SYMBOL(cpu_data);
/* A collection of single bit ipi messages. */
static struct {
/* A collection of single bit ipi messages. */
static struct {
@@
-74,6
+75,7
@@
EXPORT_SYMBOL(cpu_online_map);
int smp_num_probed; /* Internal processor count */
int smp_num_cpus = 1; /* Number that came online. */
int smp_num_probed; /* Internal processor count */
int smp_num_cpus = 1; /* Number that came online. */
+EXPORT_SYMBOL(smp_num_cpus);
extern void calibrate_delay(void);
extern void calibrate_delay(void);
@@
-515,12
+517,15
@@
smp_cpus_done(unsigned int max_cpus)
void
smp_percpu_timer_interrupt(struct pt_regs *regs)
{
void
smp_percpu_timer_interrupt(struct pt_regs *regs)
{
+ struct pt_regs *old_regs;
int cpu = smp_processor_id();
unsigned long user = user_mode(regs);
struct cpuinfo_alpha *data = &cpu_data[cpu];
int cpu = smp_processor_id();
unsigned long user = user_mode(regs);
struct cpuinfo_alpha *data = &cpu_data[cpu];
+ old_regs = set_irq_regs(regs);
+
/* Record kernel PC. */
/* Record kernel PC. */
- profile_tick(CPU_PROFILING
, regs
);
+ profile_tick(CPU_PROFILING);
if (!--data->prof_counter) {
/* We need to make like a normal interrupt -- otherwise
if (!--data->prof_counter) {
/* We need to make like a normal interrupt -- otherwise
@@
-534,6
+539,7
@@
smp_percpu_timer_interrupt(struct pt_regs *regs)
irq_exit();
}
irq_exit();
}
+ set_irq_regs(old_regs);
}
int __init
}
int __init
@@
-786,6
+792,7
@@
smp_call_function_on_cpu (void (*func) (void *info), void *info, int retry,
return 0;
}
return 0;
}
+EXPORT_SYMBOL(smp_call_function_on_cpu);
int
smp_call_function (void (*func) (void *info), void *info, int retry, int wait)
int
smp_call_function (void (*func) (void *info), void *info, int retry, int wait)
@@
-793,6
+800,7
@@
smp_call_function (void (*func) (void *info), void *info, int retry, int wait)
return smp_call_function_on_cpu (func, info, retry, wait,
cpu_online_map);
}
return smp_call_function_on_cpu (func, info, retry, wait,
cpu_online_map);
}
+EXPORT_SYMBOL(smp_call_function);
static void
ipi_imb(void *ignored)
static void
ipi_imb(void *ignored)
@@
-807,6
+815,7
@@
smp_imb(void)
if (on_each_cpu(ipi_imb, NULL, 1, 1))
printk(KERN_CRIT "smp_imb: timed out\n");
}
if (on_each_cpu(ipi_imb, NULL, 1, 1))
printk(KERN_CRIT "smp_imb: timed out\n");
}
+EXPORT_SYMBOL(smp_imb);
static void
ipi_flush_tlb_all(void *ignored)
static void
ipi_flush_tlb_all(void *ignored)
@@
-862,6
+871,7
@@
flush_tlb_mm(struct mm_struct *mm)
preempt_enable();
}
preempt_enable();
}
+EXPORT_SYMBOL(flush_tlb_mm);
struct flush_tlb_page_struct {
struct vm_area_struct *vma;
struct flush_tlb_page_struct {
struct vm_area_struct *vma;
@@
-914,6
+924,7
@@
flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)
preempt_enable();
}
preempt_enable();
}
+EXPORT_SYMBOL(flush_tlb_page);
void
flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
void
flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
@@
-921,6
+932,7
@@
flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long e
/* On the Alpha we always flush the whole user tlb. */
flush_tlb_mm(vma->vm_mm);
}
/* On the Alpha we always flush the whole user tlb. */
flush_tlb_mm(vma->vm_mm);
}
+EXPORT_SYMBOL(flush_tlb_range);
static void
ipi_flush_icache_page(void *x)
static void
ipi_flush_icache_page(void *x)