OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-mips64/] [sn/] [arch.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
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
 * SGI specific setup.
7
 *
8
 * Copyright (C) 1995 - 1997, 1999 Silcon Graphics, Inc.
9
 * Copyright (C) 1999 Ralf Baechle (ralf@gnu.org)
10
 */
11
#ifndef _ASM_SN_ARCH_H
12
#define _ASM_SN_ARCH_H
13
 
14
#include <linux/types.h>
15
#include <linux/config.h>
16
 
17
#if !defined(CONFIG_SGI_IO)
18
#include <asm/sn/types.h>
19
#include <asm/sn/sn0/arch.h>
20
#endif
21
 
22
 
23
#ifndef __ASSEMBLY__
24
#if !defined(CONFIG_SGI_IO)
25
typedef u64     hubreg_t;
26
typedef u64     nic_t;
27
#endif
28
#endif
29
 
30
#ifdef CONFIG_SGI_IP27
31
#define CPUS_PER_NODE           2       /* CPUs on a single hub */
32
#define CPUS_PER_NODE_SHFT      1       /* Bits to shift in the node number */
33
#define CPUS_PER_SUBNODE        2       /* CPUs on a single hub PI */
34
#endif
35
#define CNODE_NUM_CPUS(_cnode)          (NODEPDA(_cnode)->node_num_cpus)
36
 
37
#define CNODE_TO_CPU_BASE(_cnode)       (NODEPDA(_cnode)->node_first_cpu)
38
#define cputocnode(cpu)                         \
39
               (cpu_data[(cpu)].p_nodeid)
40
#define cputonasid(cpu)                         \
41
               (cpu_data[(cpu)].p_nasid)
42
#define cputoslice(cpu)                         \
43
               (cpu_data[(cpu)].p_slice)
44
#define makespnum(_nasid, _slice)                                       \
45
                (((_nasid) << CPUS_PER_NODE_SHFT) | (_slice))
46
 
47
#ifndef __ASSEMBLY__
48
 
49
#define INVALID_NASID           (nasid_t)-1
50
#define INVALID_CNODEID         (cnodeid_t)-1
51
#define INVALID_PNODEID         (pnodeid_t)-1
52
#define INVALID_MODULE          (moduleid_t)-1
53
#define INVALID_PARTID          (partid_t)-1
54
 
55
extern nasid_t get_nasid(void);
56
extern cnodeid_t get_cpu_cnode(cpuid_t);
57
extern int get_cpu_slice(cpuid_t);
58
 
59
/*
60
 * NO ONE should access these arrays directly.  The only reason we refer to
61
 * them here is to avoid the procedure call that would be required in the
62
 * macros below.  (Really want private data members here :-)
63
 */
64
extern cnodeid_t nasid_to_compact_node[MAX_NASIDS];
65
extern nasid_t compact_to_nasid_node[MAX_COMPACT_NODES];
66
 
67
/*
68
 * These macros are used by various parts of the kernel to convert
69
 * between the three different kinds of node numbering.   At least some
70
 * of them may change to procedure calls in the future, but the macros
71
 * will continue to work.  Don't use the arrays above directly.
72
 */
73
 
74
#define NASID_TO_REGION(nnode)          \
75
    ((nnode) >> \
76
     (is_fine_dirmode() ? NASID_TO_FINEREG_SHFT : NASID_TO_COARSEREG_SHFT))
77
 
78
#if !defined(_STANDALONE)
79
extern cnodeid_t nasid_to_compact_node[MAX_NASIDS];
80
extern nasid_t compact_to_nasid_node[MAX_COMPACT_NODES];
81
extern cnodeid_t cpuid_to_compact_node[MAXCPUS];
82
#endif
83
 
84
#if !defined(DEBUG) && (!defined(SABLE) || defined(_STANDALONE))
85
 
86
#define NASID_TO_COMPACT_NODEID(nnode)  (nasid_to_compact_node[nnode])
87
#define COMPACT_TO_NASID_NODEID(cnode)  (compact_to_nasid_node[cnode])
88
#define CPUID_TO_COMPACT_NODEID(cpu)    (cpuid_to_compact_node[(cpu)])
89
#else
90
 
91
/*
92
 * These functions can do type checking and fail if they need to return
93
 * a bad nodeid, but they're not as fast so just use 'em for debug kernels.
94
 */
95
cnodeid_t nasid_to_compact_nodeid(nasid_t nasid);
96
nasid_t compact_to_nasid_nodeid(cnodeid_t cnode);
97
 
98
#define NASID_TO_COMPACT_NODEID(nnode)  nasid_to_compact_nodeid(nnode)
99
#define COMPACT_TO_NASID_NODEID(cnode)  compact_to_nasid_nodeid(cnode)
100
#define CPUID_TO_COMPACT_NODEID(cpu)    (cpuid_to_compact_node[(cpu)])
101
#endif
102
 
103
extern int node_getlastslot(cnodeid_t);
104
 
105
#endif /* !__ASSEMBLY__ */
106
 
107
#define SLOT_BITMASK            (MAX_MEM_SLOTS - 1)
108
#define SLOT_SIZE               (1LL<<SLOT_SHIFT)
109
 
110
#define node_getnumslots(node)  (MAX_MEM_SLOTS)
111
#define NODE_MAX_MEM_SIZE       SLOT_SIZE * MAX_MEM_SLOTS
112
 
113
/*
114
 * New stuff in here from Irix sys/pfdat.h.
115
 */
116
#define SLOT_PFNSHIFT           (SLOT_SHIFT - PAGE_SHIFT)
117
#define PFN_NASIDSHFT           (NASID_SHFT - PAGE_SHIFT)
118
#define mkpfn(nasid, off)       (((pfn_t)(nasid) << PFN_NASIDSHFT) | (off))
119
#define slot_getbasepfn(node,slot) \
120
                (mkpfn(COMPACT_TO_NASID_NODEID(node), slot<<SLOT_PFNSHIFT))
121
#endif /* _ASM_SN_ARCH_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.