1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef __ASM_SMP_H
3#define __ASM_SMP_H
4
5extern int init_per_cpu(int cpuid);
6
7#if defined(CONFIG_SMP)
8
9/* Page Zero Location PDC will look for the address to branch to when we poke
10** slave CPUs still in "Icache loop".
11*/
12#define PDC_OS_BOOT_RENDEZVOUS     0x10
13#define PDC_OS_BOOT_RENDEZVOUS_HI  0x28
14
15#ifndef ASSEMBLY
16#include <linux/bitops.h>
17#include <linux/threads.h>	/* for NR_CPUS */
18#include <linux/cpumask.h>
19typedef unsigned long address_t;
20
21
22/*
23 *	Private routines/data
24 *
25 *	physical and logical are equivalent until we support CPU hotplug.
26 */
27#define cpu_number_map(cpu)	(cpu)
28#define cpu_logical_map(cpu)	(cpu)
29
30extern void smp_send_all_nop(void);
31
32extern void arch_send_call_function_single_ipi(int cpu);
33extern void arch_send_call_function_ipi_mask(const struct cpumask *mask);
34
35#define raw_smp_processor_id()		(current_thread_info()->cpu)
36
37#endif /* !ASSEMBLY */
38
39#else /* CONFIG_SMP */
40
41static inline void smp_send_all_nop(void) { return; }
42
43#endif
44
45#define NO_PROC_ID		0xFF		/* No processor magic marker */
46#define ANY_PROC_ID		0xFF		/* Any processor magic marker */
47int __cpu_disable(void);
48void __cpu_die(unsigned int cpu);
49
50#endif /*  __ASM_SMP_H */
51