]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef __ASM_SMP_H |
2 | #define __ASM_SMP_H | |
3 | ||
ae9d983b | 4 | #ifndef __ASSEMBLY__ |
1da177e4 | 5 | |
ae9d983b | 6 | extern cpumask_t cpu_callin_map; |
1da177e4 | 7 | |
2fec394a JP |
8 | extern void (*mtrr_hook)(void); |
9 | extern void zap_low_mappings(void); | |
1da177e4 | 10 | |
ae9d983b | 11 | #ifdef CONFIG_SMP |
1da177e4 LT |
12 | /* |
13 | * This function is needed by all SMP systems. It must _always_ be valid | |
14 | * from the initial startup. We map APIC_BASE very early in page_setup(), | |
15 | * so this is correct in the x86 case. | |
16 | */ | |
7c3576d2 JF |
17 | DECLARE_PER_CPU(int, cpu_number); |
18 | #define raw_smp_processor_id() (x86_read_percpu(cpu_number)) | |
1da177e4 | 19 | |
ae9d983b TG |
20 | extern int safe_smp_processor_id(void); |
21 | ||
1da177e4 LT |
22 | /* We don't mark CPUs online until __cpu_up(), so we need another measure */ |
23 | static inline int num_booting_cpus(void) | |
24 | { | |
25 | return cpus_weight(cpu_callout_map); | |
26 | } | |
27 | ||
b4033c17 | 28 | #else /* CONFIG_SMP */ |
dc2bc768 | 29 | #define safe_smp_processor_id() 0 |
ae9d983b | 30 | #endif /* !CONFIG_SMP */ |
815a965b | 31 | |
ae9d983b | 32 | #endif /* !ASSEMBLY */ |
1da177e4 | 33 | #endif |