| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* smp.h: Sparc64 specific SMP stuff. | 
|  | 2 | * | 
|  | 3 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) | 
|  | 4 | */ | 
|  | 5 |  | 
|  | 6 | #ifndef _SPARC64_SMP_H | 
|  | 7 | #define _SPARC64_SMP_H | 
|  | 8 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 9 | #include <linux/threads.h> | 
|  | 10 | #include <asm/asi.h> | 
|  | 11 | #include <asm/starfire.h> | 
|  | 12 | #include <asm/spitfire.h> | 
|  | 13 |  | 
|  | 14 | #ifndef __ASSEMBLY__ | 
|  | 15 |  | 
|  | 16 | #include <linux/cpumask.h> | 
|  | 17 | #include <linux/cache.h> | 
|  | 18 |  | 
|  | 19 | #endif /* !(__ASSEMBLY__) */ | 
|  | 20 |  | 
|  | 21 | #ifdef CONFIG_SMP | 
|  | 22 |  | 
|  | 23 | #ifndef __ASSEMBLY__ | 
|  | 24 |  | 
|  | 25 | /* | 
|  | 26 | *	Private routines/data | 
|  | 27 | */ | 
|  | 28 |  | 
| Jiri Slaby | 1977f03 | 2007-10-18 23:40:25 -0700 | [diff] [blame] | 29 | #include <linux/bitops.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 30 | #include <asm/atomic.h> | 
| Mike Travis | d5a7430 | 2007-10-16 01:24:05 -0700 | [diff] [blame] | 31 | #include <asm/percpu.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 32 |  | 
| Mike Travis | d5a7430 | 2007-10-16 01:24:05 -0700 | [diff] [blame] | 33 | DECLARE_PER_CPU(cpumask_t, cpu_sibling_map); | 
| David S. Miller | f78eae2 | 2007-06-04 17:01:39 -0700 | [diff] [blame] | 34 | extern cpumask_t cpu_core_map[NR_CPUS]; | 
| David S. Miller | a2f9f6b | 2007-06-04 21:48:33 -0700 | [diff] [blame] | 35 | extern int sparc64_multi_core; | 
| David S. Miller | 8935dce | 2006-03-08 16:09:19 -0800 | [diff] [blame] | 36 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 37 | /* | 
|  | 38 | *	General functions that each host system must provide. | 
|  | 39 | */ | 
|  | 40 |  | 
| David S. Miller | 92704a1 | 2006-02-26 23:27:19 -0800 | [diff] [blame] | 41 | extern int hard_smp_processor_id(void); | 
| Ingo Molnar | 39c715b | 2005-06-21 17:14:34 -0700 | [diff] [blame] | 42 | #define raw_smp_processor_id() (current_thread_info()->cpu) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 43 |  | 
| David S. Miller | 5cbc307 | 2007-05-25 15:49:59 -0700 | [diff] [blame] | 44 | extern void smp_fill_in_sib_core_maps(void); | 
| David S. Miller | e020440 | 2007-07-16 03:49:40 -0700 | [diff] [blame] | 45 | extern void cpu_play_dead(void); | 
| David S. Miller | 7abea92 | 2006-02-25 13:39:56 -0800 | [diff] [blame] | 46 |  | 
| David S. Miller | 4f0234f | 2007-07-13 16:03:42 -0700 | [diff] [blame] | 47 | #ifdef CONFIG_HOTPLUG_CPU | 
|  | 48 | extern int __cpu_disable(void); | 
|  | 49 | extern void __cpu_die(unsigned int cpu); | 
|  | 50 | #endif | 
|  | 51 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 52 | #endif /* !(__ASSEMBLY__) */ | 
|  | 53 |  | 
| David S. Miller | 7abea92 | 2006-02-25 13:39:56 -0800 | [diff] [blame] | 54 | #else | 
|  | 55 |  | 
| Fernando Luis Vazquez Cao | 2f4dfe2 | 2007-05-09 02:33:25 -0700 | [diff] [blame] | 56 | #define hard_smp_processor_id()		0 | 
| David S. Miller | 5cbc307 | 2007-05-25 15:49:59 -0700 | [diff] [blame] | 57 | #define smp_fill_in_sib_core_maps() do { } while (0) | 
| David S. Miller | 7abea92 | 2006-02-25 13:39:56 -0800 | [diff] [blame] | 58 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 59 | #endif /* !(CONFIG_SMP) */ | 
|  | 60 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 61 | #endif /* !(_SPARC64_SMP_H) */ |