| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #ifndef __ASM_SMP_H
 | 
					
						
							|  |  |  | #define __ASM_SMP_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/threads.h>
 | 
					
						
							|  |  |  | #include <linux/cpumask.h>
 | 
					
						
							|  |  |  | #include <linux/bitops.h>
 | 
					
						
							|  |  |  | #include <asm/pal.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* HACK: Cabrio WHAMI return value is bogus if more than 8 bits used.. :-( */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static __inline__ unsigned char | 
					
						
							|  |  |  | __hard_smp_processor_id(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	register unsigned char __r0 __asm__("$0"); | 
					
						
							|  |  |  | 	__asm__ __volatile__( | 
					
						
							|  |  |  | 		"call_pal %1 #whami" | 
					
						
							|  |  |  | 		: "=r"(__r0) | 
					
						
							|  |  |  | 		:"i" (PAL_whami) | 
					
						
							|  |  |  | 		: "$1", "$22", "$23", "$24", "$25"); | 
					
						
							|  |  |  | 	return __r0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef CONFIG_SMP
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <asm/irq.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct cpuinfo_alpha { | 
					
						
							|  |  |  | 	unsigned long loops_per_jiffy; | 
					
						
							|  |  |  | 	unsigned long last_asn; | 
					
						
							|  |  |  | 	int need_new_asn; | 
					
						
							|  |  |  | 	int asn_lock; | 
					
						
							|  |  |  | 	unsigned long ipi_count; | 
					
						
							|  |  |  | 	unsigned long prof_multiplier; | 
					
						
							|  |  |  | 	unsigned long prof_counter; | 
					
						
							|  |  |  | 	unsigned char mcheck_expected; | 
					
						
							|  |  |  | 	unsigned char mcheck_taken; | 
					
						
							|  |  |  | 	unsigned char mcheck_extra; | 
					
						
							|  |  |  | } __attribute__((aligned(64))); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern struct cpuinfo_alpha cpu_data[NR_CPUS]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define PROC_CHANGE_PENALTY     20
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define hard_smp_processor_id()	__hard_smp_processor_id()
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:14:34 -07:00
										 |  |  | #define raw_smp_processor_id()	(current_thread_info()->cpu)
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | extern int smp_num_cpus; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-10 20:47:29 +02:00
										 |  |  | extern void arch_send_call_function_single_ipi(int cpu); | 
					
						
							| 
									
										
										
										
											2009-09-24 09:34:43 -06:00
										 |  |  | extern void arch_send_call_function_ipi_mask(const struct cpumask *mask); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | #else /* CONFIG_SMP */
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-09 02:33:25 -07:00
										 |  |  | #define hard_smp_processor_id()		0
 | 
					
						
							| 
									
										
										
										
											2008-06-06 11:18:06 +02:00
										 |  |  | #define smp_call_function_on_cpu(func,info,wait,cpu)    ({ 0; })
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | #endif /* CONFIG_SMP */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define NO_PROC_ID	(-1)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif
 |