32 lines
		
	
	
		
			708 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			708 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #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__ */
 | |
| 
 | 
