Initialize it using the smp_setup_processor_id() hook.
Signed-off-by: David S. Miller <davem@davemloft.net>
+static void (*xcall_deliver)(u64, u64, u64, cpumask_t);
+
/* Send cross call to all processors mentioned in MASK
* except self.
*/
/* Send cross call to all processors mentioned in MASK
* except self.
*/
cpus_and(mask, mask, cpu_online_map);
cpu_clear(this_cpu, mask);
cpus_and(mask, mask, cpu_online_map);
cpu_clear(this_cpu, mask);
- if (tlb_type == spitfire)
- spitfire_xcall_deliver(data0, data1, data2, mask);
- else if (tlb_type == cheetah || tlb_type == cheetah_plus)
- cheetah_xcall_deliver(data0, data1, data2, mask);
- else
- hypervisor_xcall_deliver(data0, data1, data2, mask);
+ xcall_deliver(data0, data1, data2, mask);
/* NOTE: Caller runs local copy on master. */
put_cpu();
/* NOTE: Caller runs local copy on master. */
put_cpu();
+void __init smp_setup_processor_id(void)
+{
+ if (tlb_type == spitfire)
+ xcall_deliver = spitfire_xcall_deliver;
+ else if (tlb_type == cheetah || tlb_type == cheetah_plus)
+ xcall_deliver = cheetah_xcall_deliver;
+ else
+ xcall_deliver = hypervisor_xcall_deliver;
+}
+
void __devinit smp_fill_in_sib_core_maps(void)
{
unsigned int i;
void __devinit smp_fill_in_sib_core_maps(void)
{
unsigned int i;