1/* 2 * derived from arch/arm/mach-realview/include/mach/smp.h 3 * 4 * This file is required from common architecture code, 5 * in arch/arm/include/asm/smp.h 6 */ 7 8#ifndef __ASM_ARCH_SMP_H 9#define __ASM_ARCH_SMP_H __FILE__ 10 11#include <asm/hardware/gic.h> 12 13extern void platform_secondary_startup(void); 14 15/* Used in hotplug.c */ 16#define hard_smp_processor_id() \ 17 ({ \ 18 unsigned int cpunum; \ 19 __asm__("mrc p15, 0, %0, c0, c0, 5" \ 20 : "=r" (cpunum)); \ 21 cpunum &= 0x0F; \ 22 }) 23 24/* 25 * We use IRQ1 as the IPI 26 */ 27static inline void smp_cross_call(const struct cpumask *mask) 28{ 29 gic_raise_softirq(mask, 1); 30} 31 32#endif /* __ASM_ARCH_SMP_H */ 33