| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef __ASM_MACH_WAKECPU_H | 
 | 2 | #define __ASM_MACH_WAKECPU_H | 
 | 3 |  | 
 | 4 | /*  | 
 | 5 |  * This file copes with machines that wakeup secondary CPUs by the | 
 | 6 |  * INIT, INIT, STARTUP sequence. | 
 | 7 |  */ | 
 | 8 |  | 
 | 9 | #ifdef CONFIG_ES7000_CLUSTERED_APIC | 
 | 10 | #define WAKE_SECONDARY_VIA_MIP | 
 | 11 | #else | 
 | 12 | #define WAKE_SECONDARY_VIA_INIT | 
 | 13 | #endif | 
 | 14 |  | 
 | 15 | #ifdef WAKE_SECONDARY_VIA_MIP | 
 | 16 | extern int es7000_start_cpu(int cpu, unsigned long eip); | 
 | 17 | static inline int | 
 | 18 | wakeup_secondary_cpu(int phys_apicid, unsigned long start_eip) | 
 | 19 | { | 
 | 20 | 	int boot_error = 0; | 
 | 21 | 	boot_error = es7000_start_cpu(phys_apicid, start_eip); | 
 | 22 | 	return boot_error; | 
 | 23 | } | 
 | 24 | #endif | 
 | 25 |  | 
 | 26 | #define TRAMPOLINE_LOW phys_to_virt(0x467) | 
 | 27 | #define TRAMPOLINE_HIGH phys_to_virt(0x469) | 
 | 28 |  | 
 | 29 | #define boot_cpu_apicid boot_cpu_physical_apicid | 
 | 30 |  | 
 | 31 | static inline void wait_for_init_deassert(atomic_t *deassert) | 
 | 32 | { | 
 | 33 | #ifdef WAKE_SECONDARY_VIA_INIT | 
| Satyam Sharma | 62be900 | 2007-08-16 06:09:25 +0530 | [diff] [blame] | 34 | 	while (!atomic_read(deassert)) | 
 | 35 | 		cpu_relax(); | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 36 | #endif | 
 | 37 | 	return; | 
 | 38 | } | 
 | 39 |  | 
 | 40 | /* Nothing to do for most platforms, since cleared by the INIT cycle */ | 
 | 41 | static inline void smp_callin_clear_local_apic(void) | 
 | 42 | { | 
 | 43 | } | 
 | 44 |  | 
 | 45 | static inline void store_NMI_vector(unsigned short *high, unsigned short *low) | 
 | 46 | { | 
 | 47 | } | 
 | 48 |  | 
 | 49 | static inline void restore_NMI_vector(unsigned short *high, unsigned short *low) | 
 | 50 | { | 
 | 51 | } | 
 | 52 |  | 
 | 53 | #if APIC_DEBUG | 
 | 54 |  #define inquire_remote_apic(apicid) __inquire_remote_apic(apicid) | 
 | 55 | #else | 
 | 56 |  #define inquire_remote_apic(apicid) {} | 
 | 57 | #endif | 
 | 58 |  | 
 | 59 | #endif /* __ASM_MACH_WAKECPU_H */ |