1 /* smp.h: PPC specific SMP stuff.
3 * Original was a copy of sparc smp.h. Now heavily modified
6 * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
7 * Copyright (C) 1996-2001 Cort Dougan <cort@fsmlabs.com>
13 #include <linux/config.h>
14 #include <linux/kernel.h>
21 unsigned long loops_per_jiffy;
23 unsigned long *pgd_cache;
24 unsigned long *pte_cache;
25 unsigned long pgtable_cache_sz;
28 extern struct cpuinfo_PPC cpu_data[NR_CPUS];
29 extern unsigned long cpu_online_map;
30 extern unsigned long smp_proc_in_lock[NR_CPUS];
31 extern volatile unsigned long cpu_callin_map[NR_CPUS];
32 extern int smp_tb_synchronized;
34 extern void smp_store_cpu_info(int id);
35 extern void smp_send_tlb_invalidate(int);
36 extern void smp_send_xmon_break(int cpu);
38 extern void smp_message_recv(int, struct pt_regs *);
39 extern void smp_local_timer_interrupt(struct pt_regs *);
41 #define NO_PROC_ID 0xFF /* No processor magic marker */
42 #define PROC_CHANGE_PENALTY 20
44 /* 1 to 1 mapping on PPC -- Cort */
45 #define cpu_logical_map(cpu) (cpu)
46 #define cpu_number_map(x) (x)
48 #define smp_processor_id() (current->processor)
50 extern int smp_hw_index[NR_CPUS];
51 #define hard_smp_processor_id() (smp_hw_index[smp_processor_id()])
53 struct klock_info_struct {
54 unsigned long kernel_flag;
58 extern struct klock_info_struct klock_info;
59 #define KLOCK_HELD 0xffffffff
60 #define KLOCK_CLEAR 0x0
63 #define smp_send_tlb_invalidate(x) smp_ppc750_send_tlb_invalidate(x)
65 #define smp_send_tlb_invalidate(x) do {} while(0)
68 #endif /* __ASSEMBLY__ */
70 #else /* !(CONFIG_SMP) */
72 #endif /* !(CONFIG_SMP) */
74 #endif /* !(_PPC_SMP_H) */
75 #endif /* __KERNEL__ */