1#ifndef __ASM_SMP_H
2#define __ASM_SMP_H
3
4#include <linux/config.h>
5
6#if defined(CONFIG_SMP)
7
8/* Page Zero Location PDC will look for the address to branch to when we poke
9** slave CPUs still in "Icache loop".
10*/
11#define PDC_OS_BOOT_RENDEZVOUS     0x10
12#define PDC_OS_BOOT_RENDEZVOUS_HI  0x28
13
14#ifndef ASSEMBLY
15#include <linux/threads.h>	/* for NR_CPUS */
16typedef unsigned long address_t;
17
18extern volatile unsigned long cpu_online_map;
19
20
21/*
22 *	Private routines/data
23 *
24 *	physical and logical are equivalent until we support CPU hotplug.
25 */
26#define cpu_number_map(cpu)	(cpu)
27#define cpu_logical_map(cpu)	(cpu)
28
29extern void smp_send_reschedule(int cpu);
30
31#endif /* !ASSEMBLY */
32
33/*
34 *	This magic constant controls our willingness to transfer
35 *      a process across CPUs. Such a transfer incurs cache and tlb
36 *      misses. The current value is inherited from i386. Still needs
37 *      to be tuned for parisc.
38 */
39
40#define PROC_CHANGE_PENALTY	15		/* Schedule penalty */
41
42#undef ENTRY_SYS_CPUS
43#ifdef ENTRY_SYS_CPUS
44#define STATE_RENDEZVOUS			0
45#define STATE_STOPPED 				1
46#define STATE_RUNNING				2
47#define STATE_HALTED				3
48#endif
49
50#define smp_processor_id() (current->processor)
51
52#endif /* CONFIG_SMP */
53
54#define NO_PROC_ID		0xFF		/* No processor magic marker */
55#define ANY_PROC_ID		0xFF		/* Any processor magic marker */
56
57#endif /*  __ASM_SMP_H */
58