2005-04-17 02:20:36 +04:00
/* smp.h: PPC specific SMP stuff.
*
* Original was a copy of sparc smp . h . Now heavily modified
* for PPC .
*
* Copyright ( C ) 1996 David S . Miller ( davem @ caip . rutgers . edu )
* Copyright ( C ) 1996 - 2001 Cort Dougan < cort @ fsmlabs . com >
*/
# ifdef __KERNEL__
# ifndef _PPC_SMP_H
# define _PPC_SMP_H
# include <linux/kernel.h>
# include <linux/bitops.h>
# include <linux/errno.h>
# include <linux/cpumask.h>
# include <linux/threads.h>
# ifdef CONFIG_SMP
# ifndef __ASSEMBLY__
struct cpuinfo_PPC {
unsigned long loops_per_jiffy ;
unsigned long pvr ;
unsigned long * pgd_cache ;
unsigned long * pte_cache ;
unsigned long pgtable_cache_sz ;
} ;
extern struct cpuinfo_PPC cpu_data [ ] ;
extern cpumask_t cpu_online_map ;
extern cpumask_t cpu_possible_map ;
extern unsigned long smp_proc_in_lock [ ] ;
extern volatile unsigned long cpu_callin_map [ ] ;
extern int smp_tb_synchronized ;
2005-10-19 17:12:01 +04:00
extern struct smp_ops_t * smp_ops ;
2005-04-17 02:20:36 +04:00
extern void smp_send_tlb_invalidate ( int ) ;
extern void smp_send_xmon_break ( int cpu ) ;
struct pt_regs ;
2006-10-07 01:06:48 +04:00
extern void smp_message_recv ( int ) ;
2005-04-17 02:20:36 +04:00
2005-09-10 15:13:13 +04:00
extern int __cpu_disable ( void ) ;
extern void __cpu_die ( unsigned int cpu ) ;
extern void cpu_die ( void ) __attribute__ ( ( noreturn ) ) ;
2005-06-22 04:14:34 +04:00
# define raw_smp_processor_id() (current_thread_info()->cpu)
2005-04-17 02:20:36 +04:00
extern int __cpu_up ( unsigned int cpu ) ;
extern int smp_hw_index [ ] ;
2005-09-26 10:04:21 +04:00
# define hard_smp_processor_id() (smp_hw_index[smp_processor_id()])
# define get_hard_smp_processor_id(cpu) (smp_hw_index[(cpu)])
2005-10-27 16:42:04 +04:00
# define set_hard_smp_processor_id(cpu, phys)\
( smp_hw_index [ ( cpu ) ] = ( phys ) )
2005-04-17 02:20:36 +04:00
# endif /* __ASSEMBLY__ */
# else /* !(CONFIG_SMP) */
2005-09-10 15:13:13 +04:00
static inline void cpu_die ( void ) { }
2005-09-26 10:04:21 +04:00
# define get_hard_smp_processor_id(cpu) 0
2005-10-27 16:42:04 +04:00
# define set_hard_smp_processor_id(cpu, phys)
2005-09-26 10:04:21 +04:00
# define hard_smp_processor_id() 0
2005-09-10 15:13:13 +04:00
2005-04-17 02:20:36 +04:00
# endif /* !(CONFIG_SMP) */
2005-10-27 16:42:04 +04:00
# ifndef __ASSEMBLY__
extern int boot_cpuid ;
extern int boot_cpuid_phys ;
# endif
2005-04-17 02:20:36 +04:00
# endif /* !(_PPC_SMP_H) */
# endif /* __KERNEL__ */