Subversion Repositories shark

Rev

Go to most recent revision | 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
#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
34
        while (!atomic_read(deassert));
35
#endif
36
        return;
37
}
38
 
39
/* Nothing to do for most platforms, since cleared by the INIT cycle */
40
static inline void smp_callin_clear_local_apic(void)
41
{
42
}
43
 
44
static inline void store_NMI_vector(unsigned short *high, unsigned short *low)
45
{
46
}
47
 
48
static inline void restore_NMI_vector(unsigned short *high, unsigned short *low)
49
{
50
}
51
 
52
#if APIC_DEBUG
53
 #define inquire_remote_apic(apicid) __inquire_remote_apic(apicid)
54
#else
55
 #define inquire_remote_apic(apicid) {}
56
#endif
57
 
58
#endif /* __ASM_MACH_WAKECPU_H */