Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
424 | giacomo | 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 | #define WAKE_SECONDARY_VIA_INIT |
||
10 | |||
11 | /* |
||
12 | * On PC-9800, continuation on warm reset is done by loading |
||
13 | * %ss:%sp from 0x0000:0404 and executing 'lret', so: |
||
14 | */ |
||
15 | #define TRAMPOLINE_LOW phys_to_virt(0x4fa) |
||
16 | #define TRAMPOLINE_HIGH phys_to_virt(0x4fc) |
||
17 | |||
18 | #define boot_cpu_apicid boot_cpu_physical_apicid |
||
19 | |||
20 | static inline void wait_for_init_deassert(atomic_t *deassert) |
||
21 | { |
||
22 | while (!atomic_read(deassert)); |
||
23 | return; |
||
24 | } |
||
25 | |||
26 | /* Nothing to do for most platforms, since cleared by the INIT cycle */ |
||
27 | static inline void smp_callin_clear_local_apic(void) |
||
28 | { |
||
29 | } |
||
30 | |||
31 | static inline void store_NMI_vector(unsigned short *high, unsigned short *low) |
||
32 | { |
||
33 | } |
||
34 | |||
35 | static inline void restore_NMI_vector(unsigned short *high, unsigned short *low) |
||
36 | { |
||
37 | } |
||
38 | |||
39 | #if APIC_DEBUG |
||
40 | #define inquire_remote_apic(apicid) __inquire_remote_apic(apicid) |
||
41 | #else |
||
42 | #define inquire_remote_apic(apicid) {} |
||
43 | #endif |
||
44 | |||
45 | #endif /* __ASM_MACH_WAKECPU_H */ |