smp_32.h 789 字节
Newer Older
L
Linus Torvalds 已提交
1 2 3
#ifndef __ASM_SMP_H
#define __ASM_SMP_H

T
Thomas Gleixner 已提交
4
#ifndef __ASSEMBLY__
L
Linus Torvalds 已提交
5

T
Thomas Gleixner 已提交
6
extern cpumask_t cpu_callin_map;
L
Linus Torvalds 已提交
7

8 9
extern void (*mtrr_hook)(void);
extern void zap_low_mappings(void);
L
Linus Torvalds 已提交
10

T
Thomas Gleixner 已提交
11
#ifdef CONFIG_SMP
L
Linus Torvalds 已提交
12 13 14 15 16
/*
 * This function is needed by all SMP systems. It must _always_ be valid
 * from the initial startup. We map APIC_BASE very early in page_setup(),
 * so this is correct in the x86 case.
 */
17 18
DECLARE_PER_CPU(int, cpu_number);
#define raw_smp_processor_id() (x86_read_percpu(cpu_number))
L
Linus Torvalds 已提交
19

T
Thomas Gleixner 已提交
20 21
extern int safe_smp_processor_id(void);

L
Linus Torvalds 已提交
22 23 24 25 26 27
/* We don't mark CPUs online until __cpu_up(), so we need another measure */
static inline int num_booting_cpus(void)
{
	return cpus_weight(cpu_callout_map);
}

28
#else /* CONFIG_SMP */
29
#define safe_smp_processor_id()		0
T
Thomas Gleixner 已提交
30
#endif /* !CONFIG_SMP */
31

T
Thomas Gleixner 已提交
32
#endif /* !ASSEMBLY */
L
Linus Torvalds 已提交
33
#endif