| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
|  | 2 | * This file is subject to the terms and conditions of the GNU General Public | 
|  | 3 | * License.  See the file "COPYING" in the main directory of this archive | 
|  | 4 | * for more details. | 
|  | 5 | * | 
|  | 6 | * Copyright (c) 2000 Silicon Graphics, Inc.  All rights reserved. | 
|  | 7 | * Copyright (c) 2002 NEC Corp. | 
|  | 8 | * Copyright (c) 2002 Erich Focht <efocht@ess.nec.de> | 
|  | 9 | * Copyright (c) 2002 Kimio Suganuma <k-suganuma@da.jp.nec.com> | 
|  | 10 | */ | 
|  | 11 | #ifndef _ASM_IA64_NODEDATA_H | 
|  | 12 | #define _ASM_IA64_NODEDATA_H | 
|  | 13 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 14 | #include <linux/numa.h> | 
|  | 15 |  | 
|  | 16 | #include <asm/percpu.h> | 
|  | 17 | #include <asm/mmzone.h> | 
|  | 18 |  | 
| Bob Picco | 1be7d99 | 2005-10-04 15:13:50 -0400 | [diff] [blame] | 19 | #ifdef CONFIG_NUMA | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 20 |  | 
|  | 21 | /* | 
|  | 22 | * Node Data. One of these structures is located on each node of a NUMA system. | 
|  | 23 | */ | 
|  | 24 |  | 
|  | 25 | struct pglist_data; | 
|  | 26 | struct ia64_node_data { | 
|  | 27 | short			active_cpu_count; | 
|  | 28 | short			node; | 
|  | 29 | struct pglist_data	*pg_data_ptrs[MAX_NUMNODES]; | 
|  | 30 | }; | 
|  | 31 |  | 
|  | 32 |  | 
|  | 33 | /* | 
|  | 34 | * Return a pointer to the node_data structure for the executing cpu. | 
|  | 35 | */ | 
|  | 36 | #define local_node_data		(local_cpu_data->node_data) | 
|  | 37 |  | 
|  | 38 | /* | 
|  | 39 | * Given a node id, return a pointer to the pg_data_t for the node. | 
|  | 40 | * | 
|  | 41 | * NODE_DATA 	- should be used in all code not related to system | 
|  | 42 | *		  initialization. It uses pernode data structures to minimize | 
|  | 43 | *		  offnode memory references. However, these structure are not | 
|  | 44 | *		  present during boot. This macro can be used once cpu_init | 
|  | 45 | *		  completes. | 
|  | 46 | */ | 
|  | 47 | #define NODE_DATA(nid)		(local_node_data->pg_data_ptrs[nid]) | 
|  | 48 |  | 
| Yasunori Goto | 7049027 | 2006-06-27 02:53:39 -0700 | [diff] [blame] | 49 | /* | 
|  | 50 | * LOCAL_DATA_ADDR - This is to calculate the address of other node's | 
|  | 51 | *		     "local_node_data" at hot-plug phase. The local_node_data | 
|  | 52 | *		     is pointed by per_cpu_page. Kernel usually use it for | 
|  | 53 | *		     just executing cpu. However, when new node is hot-added, | 
|  | 54 | *		     the addresses of local data for other nodes are necessary | 
|  | 55 | *		     to update all of them. | 
|  | 56 | */ | 
|  | 57 | #define LOCAL_DATA_ADDR(pgdat)  			\ | 
|  | 58 | ((struct ia64_node_data *)((u64)(pgdat) + 	\ | 
|  | 59 | L1_CACHE_ALIGN(sizeof(struct pglist_data)))) | 
|  | 60 |  | 
| Bob Picco | 1be7d99 | 2005-10-04 15:13:50 -0400 | [diff] [blame] | 61 | #endif /* CONFIG_NUMA */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 62 |  | 
|  | 63 | #endif /* _ASM_IA64_NODEDATA_H */ |