|  | #ifndef __ASM_SMP_H | 
|  | #define __ASM_SMP_H | 
|  |  | 
|  |  | 
|  | #if defined(CONFIG_SMP) | 
|  |  | 
|  | /* Page Zero Location PDC will look for the address to branch to when we poke | 
|  | ** slave CPUs still in "Icache loop". | 
|  | */ | 
|  | #define PDC_OS_BOOT_RENDEZVOUS     0x10 | 
|  | #define PDC_OS_BOOT_RENDEZVOUS_HI  0x28 | 
|  |  | 
|  | #ifndef ASSEMBLY | 
|  | #include <linux/bitops.h> | 
|  | #include <linux/threads.h>	/* for NR_CPUS */ | 
|  | #include <linux/cpumask.h> | 
|  | typedef unsigned long address_t; | 
|  |  | 
|  | extern cpumask_t cpu_online_map; | 
|  |  | 
|  |  | 
|  | /* | 
|  | *	Private routines/data | 
|  | * | 
|  | *	physical and logical are equivalent until we support CPU hotplug. | 
|  | */ | 
|  | #define cpu_number_map(cpu)	(cpu) | 
|  | #define cpu_logical_map(cpu)	(cpu) | 
|  |  | 
|  | extern void smp_send_reschedule(int cpu); | 
|  | extern void smp_send_all_nop(void); | 
|  |  | 
|  | #endif /* !ASSEMBLY */ | 
|  |  | 
|  | /* | 
|  | *	This magic constant controls our willingness to transfer | 
|  | *      a process across CPUs. Such a transfer incurs cache and tlb | 
|  | *      misses. The current value is inherited from i386. Still needs | 
|  | *      to be tuned for parisc. | 
|  | */ | 
|  |  | 
|  | #define PROC_CHANGE_PENALTY	15		/* Schedule penalty */ | 
|  |  | 
|  | #undef ENTRY_SYS_CPUS | 
|  | #ifdef ENTRY_SYS_CPUS | 
|  | #define STATE_RENDEZVOUS			0 | 
|  | #define STATE_STOPPED 				1 | 
|  | #define STATE_RUNNING				2 | 
|  | #define STATE_HALTED				3 | 
|  | #endif | 
|  |  | 
|  | extern unsigned long cpu_present_mask; | 
|  |  | 
|  | #define raw_smp_processor_id()	(current_thread_info()->cpu) | 
|  |  | 
|  | #else /* CONFIG_SMP */ | 
|  |  | 
|  | static inline void smp_send_all_nop(void) { return; } | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define NO_PROC_ID		0xFF		/* No processor magic marker */ | 
|  | #define ANY_PROC_ID		0xFF		/* Any processor magic marker */ | 
|  | static inline int __cpu_disable (void) { | 
|  | return 0; | 
|  | } | 
|  | static inline void __cpu_die (unsigned int cpu) { | 
|  | while(1) | 
|  | ; | 
|  | } | 
|  | extern int __cpu_up (unsigned int cpu); | 
|  |  | 
|  | #endif /*  __ASM_SMP_H */ |