1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _ASM_MACH_MMZONE_H
3 #define _ASM_MACH_MMZONE_H
4 
5 #include <asm/sn/addrs.h>
6 #include <asm/sn/arch.h>
7 #include <asm/sn/hub.h>
8 
9 #define pa_to_nid(addr)		NASID_TO_COMPACT_NODEID(NASID_GET(addr))
10 
11 #define LEVELS_PER_SLICE	128
12 
13 struct slice_data {
14 	unsigned long irq_enable_mask[2];
15 	int level_to_irq[LEVELS_PER_SLICE];
16 };
17 
18 struct hub_data {
19 	kern_vars_t	kern_vars;
20 	DECLARE_BITMAP(h_bigwin_used, HUB_NUM_BIG_WINDOW);
21 	cpumask_t	h_cpus;
22 	unsigned long slice_map;
23 	unsigned long irq_alloc_mask[2];
24 	struct slice_data slice[2];
25 };
26 
27 struct node_data {
28 	struct pglist_data pglist;
29 	struct hub_data hub;
30 };
31 
32 extern struct node_data *__node_data[];
33 
34 #define NODE_DATA(n)		(&__node_data[(n)]->pglist)
35 #define hub_data(n)		(&__node_data[(n)]->hub)
36 
37 #endif /* _ASM_MACH_MMZONE_H */
38