diff options
Diffstat (limited to 'arch/alpha/include/asm/smp.h')
-rw-r--r-- | arch/alpha/include/asm/smp.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/arch/alpha/include/asm/smp.h b/arch/alpha/include/asm/smp.h new file mode 100644 index 000000000000..544c69af8168 --- /dev/null +++ b/arch/alpha/include/asm/smp.h | |||
@@ -0,0 +1,62 @@ | |||
1 | #ifndef __ASM_SMP_H | ||
2 | #define __ASM_SMP_H | ||
3 | |||
4 | #include <linux/threads.h> | ||
5 | #include <linux/cpumask.h> | ||
6 | #include <linux/bitops.h> | ||
7 | #include <asm/pal.h> | ||
8 | |||
9 | /* HACK: Cabrio WHAMI return value is bogus if more than 8 bits used.. :-( */ | ||
10 | |||
11 | static __inline__ unsigned char | ||
12 | __hard_smp_processor_id(void) | ||
13 | { | ||
14 | register unsigned char __r0 __asm__("$0"); | ||
15 | __asm__ __volatile__( | ||
16 | "call_pal %1 #whami" | ||
17 | : "=r"(__r0) | ||
18 | :"i" (PAL_whami) | ||
19 | : "$1", "$22", "$23", "$24", "$25"); | ||
20 | return __r0; | ||
21 | } | ||
22 | |||
23 | #ifdef CONFIG_SMP | ||
24 | |||
25 | #include <asm/irq.h> | ||
26 | |||
27 | struct cpuinfo_alpha { | ||
28 | unsigned long loops_per_jiffy; | ||
29 | unsigned long last_asn; | ||
30 | int need_new_asn; | ||
31 | int asn_lock; | ||
32 | unsigned long ipi_count; | ||
33 | unsigned long prof_multiplier; | ||
34 | unsigned long prof_counter; | ||
35 | unsigned char mcheck_expected; | ||
36 | unsigned char mcheck_taken; | ||
37 | unsigned char mcheck_extra; | ||
38 | } __attribute__((aligned(64))); | ||
39 | |||
40 | extern struct cpuinfo_alpha cpu_data[NR_CPUS]; | ||
41 | |||
42 | #define PROC_CHANGE_PENALTY 20 | ||
43 | |||
44 | #define hard_smp_processor_id() __hard_smp_processor_id() | ||
45 | #define raw_smp_processor_id() (current_thread_info()->cpu) | ||
46 | |||
47 | extern int smp_num_cpus; | ||
48 | #define cpu_possible_map cpu_present_map | ||
49 | |||
50 | extern void arch_send_call_function_single_ipi(int cpu); | ||
51 | extern void arch_send_call_function_ipi(cpumask_t mask); | ||
52 | |||
53 | #else /* CONFIG_SMP */ | ||
54 | |||
55 | #define hard_smp_processor_id() 0 | ||
56 | #define smp_call_function_on_cpu(func,info,wait,cpu) ({ 0; }) | ||
57 | |||
58 | #endif /* CONFIG_SMP */ | ||
59 | |||
60 | #define NO_PROC_ID (-1) | ||
61 | |||
62 | #endif | ||