blob: 3a013a98297c8fa1f3c7f10d7af3104cedd70c3a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#ifndef __SMP_X86_H__
#define __SMP_X86_H__
#include "arch_proto.h" /* K_STACK_SIZE */
#define MAX_NR_INTERRUPT_ENTRIES 128
#ifndef __ASSEMBLY__
/* returns the current cpu id */
#define cpuid (((u32_t *)(((u32_t)get_stack_frame() + (K_STACK_SIZE - 1)) \
& ~(K_STACK_SIZE - 1)))[-1])
/*
* in case apic or smp is disabled in boot monitor, we need to finish single cpu
* boot using the legacy PIC
*/
#define smp_single_cpu_fallback() do { \
tss_init(0, get_k_stack_top(0)); \
bsp_cpu_id = 0; \
ncpus = 1; \
bsp_finish_booting(); \
} while(0)
extern unsigned char cpuid2apicid[CONFIG_MAX_CPUS];
#define barrier() do { mfence(); } while(0)
#endif
#endif /* __SMP_X86_H__ */
|