equal
deleted
inserted
replaced
1 #ifndef __ASM_NUMAQ_WAKECPU_H |
1 #ifndef __ASM_NUMAQ_WAKECPU_H |
2 #define __ASM_NUMAQ_WAKECPU_H |
2 #define __ASM_NUMAQ_WAKECPU_H |
3 |
3 |
4 /* This file copes with machines that wakeup secondary CPUs by NMIs */ |
4 /* This file copes with machines that wakeup secondary CPUs by NMIs */ |
5 |
5 |
6 #define WAKE_SECONDARY_VIA_NMI |
6 #define TRAMPOLINE_PHYS_LOW (0x8) |
7 |
7 #define TRAMPOLINE_PHYS_HIGH (0xa) |
8 #define TRAMPOLINE_LOW phys_to_virt(0x8) |
|
9 #define TRAMPOLINE_HIGH phys_to_virt(0xa) |
|
10 |
|
11 #define boot_cpu_apicid boot_cpu_logical_apicid |
|
12 |
8 |
13 /* We don't do anything here because we use NMI's to boot instead */ |
9 /* We don't do anything here because we use NMI's to boot instead */ |
14 static inline void wait_for_init_deassert(atomic_t *deassert) |
10 static inline void wait_for_init_deassert(atomic_t *deassert) |
15 { |
11 { |
16 } |
12 } |
25 } |
21 } |
26 |
22 |
27 static inline void store_NMI_vector(unsigned short *high, unsigned short *low) |
23 static inline void store_NMI_vector(unsigned short *high, unsigned short *low) |
28 { |
24 { |
29 printk("Storing NMI vector\n"); |
25 printk("Storing NMI vector\n"); |
30 *high = *((volatile unsigned short *) TRAMPOLINE_HIGH); |
26 *high = |
31 *low = *((volatile unsigned short *) TRAMPOLINE_LOW); |
27 *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_HIGH)); |
|
28 *low = |
|
29 *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_LOW)); |
32 } |
30 } |
33 |
31 |
34 static inline void restore_NMI_vector(unsigned short *high, unsigned short *low) |
32 static inline void restore_NMI_vector(unsigned short *high, unsigned short *low) |
35 { |
33 { |
36 printk("Restoring NMI vector\n"); |
34 printk("Restoring NMI vector\n"); |
37 *((volatile unsigned short *) TRAMPOLINE_HIGH) = *high; |
35 *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_HIGH)) = |
38 *((volatile unsigned short *) TRAMPOLINE_LOW) = *low; |
36 *high; |
|
37 *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_LOW)) = |
|
38 *low; |
39 } |
39 } |
40 |
40 |
41 #define inquire_remote_apic(apicid) {} |
41 static inline void inquire_remote_apic(int apicid) |
|
42 { |
|
43 } |
42 |
44 |
43 #endif /* __ASM_NUMAQ_WAKECPU_H */ |
45 #endif /* __ASM_NUMAQ_WAKECPU_H */ |