~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/mips/include/asm/sn/addrs.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/mips/include/asm/sn/addrs.h (Architecture i386) and /arch/sparc64/include/asm-sparc64/sn/addrs.h (Architecture sparc64)


  1 /*                                                  1 
  2  * This file is subject to the terms and condi    
  3  * License.  See the file "COPYING" in the mai    
  4  * for more details.                              
  5  *                                                
  6  * Copyright (C) 1992 - 1997, 1999, 2000 Silic    
  7  * Copyright (C) 1999, 2000 by Ralf Baechle       
  8  */                                               
  9 #ifndef _ASM_SN_ADDRS_H                           
 10 #define _ASM_SN_ADDRS_H                           
 11                                                   
 12                                                   
 13 #ifndef __ASSEMBLY__                              
 14 #include <linux/smp.h>                            
 15 #include <linux/types.h>                          
 16 #endif /* !__ASSEMBLY__ */                        
 17                                                   
 18 #include <asm/addrspace.h>                        
 19 #include <asm/sn/kldir.h>                         
 20                                                   
 21 #if defined(CONFIG_SGI_IP27)                      
 22 #include <asm/sn/sn0/addrs.h>                     
 23 #elif defined(CONFIG_SGI_IP35)                    
 24 #include <asm/sn/sn1/addrs.h>                     
 25 #endif                                            
 26                                                   
 27                                                   
 28 #ifndef __ASSEMBLY__                              
 29                                                   
 30 #define UINT64_CAST             (unsigned long    
 31                                                   
 32 #else /* __ASSEMBLY__ */                          
 33                                                   
 34 #define UINT64_CAST                               
 35                                                   
 36 #endif /* __ASSEMBLY__ */                         
 37                                                   
 38                                                   
 39 #define NASID_GET_META(_n)      ((_n) >> NASID    
 40 #ifdef CONFIG_SGI_IP27                            
 41 #define NASID_GET_LOCAL(_n)     ((_n) & 0xf)      
 42 #endif                                            
 43 #define NASID_MAKE(_m, _l)      (((_m) << NASI    
 44                                                   
 45 #define NODE_ADDRSPACE_MASK     (NODE_ADDRSPAC    
 46 #define TO_NODE_ADDRSPACE(_pa)  (UINT64_CAST (    
 47                                                   
 48 #define CHANGE_ADDR_NASID(_pa, _nasid)  \         
 49                 ((UINT64_CAST(_pa) & ~NASID_MA    
 50                  (UINT64_CAST(_nasid) <<  NASI    
 51                                                   
 52                                                   
 53 /*                                                
 54  * The following macros are used to index to t    
 55  * node's address space.                          
 56  */                                               
 57                                                   
 58 #define NODE_OFFSET(_n)         (UINT64_CAST (    
 59                                                   
 60 #define NODE_CAC_BASE(_n)       (CAC_BASE   +     
 61 #define NODE_HSPEC_BASE(_n)     (HSPEC_BASE +     
 62 #define NODE_IO_BASE(_n)        (IO_BASE    +     
 63 #define NODE_MSPEC_BASE(_n)     (MSPEC_BASE +     
 64 #define NODE_UNCAC_BASE(_n)     (UNCAC_BASE +     
 65                                                   
 66 #define TO_NODE(_n, _x)         (NODE_OFFSET(_    
 67 #define TO_NODE_CAC(_n, _x)     (NODE_CAC_BASE    
 68 #define TO_NODE_UNCAC(_n, _x)   (NODE_UNCAC_BA    
 69 #define TO_NODE_MSPEC(_n, _x)   (NODE_MSPEC_BA    
 70 #define TO_NODE_HSPEC(_n, _x)   (NODE_HSPEC_BA    
 71                                                   
 72                                                   
 73 #define RAW_NODE_SWIN_BASE(nasid, widget)         
 74         (NODE_IO_BASE(nasid) + (UINT64_CAST(wi    
 75                                                   
 76 #define WIDGETID_GET(addr)      ((unsigned cha    
 77                                                   
 78 /*                                                
 79  * The following definitions pertain to the IO    
 80  * space.  They define the location of the big    
 81  * of any given node.                             
 82  */                                               
 83                                                   
 84 #define SWIN_SIZE_BITS          24                
 85 #define SWIN_SIZE               (UINT64_CAST 1    
 86 #define SWIN_SIZEMASK           (SWIN_SIZE - 1    
 87 #define SWIN_WIDGET_MASK        0xF               
 88                                                   
 89 /*                                                
 90  * Convert smallwindow address to xtalk addres    
 91  *                                                
 92  * 'addr' can be physical or virtual address,     
 93  * to Xtalk address in the range 0 -> SWINZ_SI    
 94  */                                               
 95 #define SWIN_WIDGETADDR(addr)   ((addr) & SWIN    
 96 #define SWIN_WIDGETNUM(addr)    (((addr)  >> S    
 97 /*                                                
 98  * Verify if addr belongs to small window addr    
 99  *                                                
100  *                                                
101  * NOTE: "addr" is expected to be XKPHYS addre    
102  * address                                        
103  *                                                
104  *                                                
105  */                                               
106 #define NODE_SWIN_ADDR(nasid, addr)     \         
107                 (((addr) >= NODE_SWIN_BASE(nas    
108                  ((addr) <  (NODE_SWIN_BASE(na    
109                  ))                               
110                                                   
111 /*                                                
112  * The following define the major position-ind    
113  * in SN.                                         
114  *      UALIAS -- 256MB in size, reads in the     
115  *                      uncached references to    
116  *      CPU_UALIAS -- 128kb in size, the botto    
117  *                      depending on which CPU    
118  *                      all CPUs with unique u    
119  *      LBOOT  -- 256MB in size, reads in the     
120  *                      uncached references to    
121  *                      other directory-bus co    
122  *      IALIAS -- 8MB in size, reads in the IA    
123  *                      references to the loca    
124  */                                               
125                                                   
126 #define UALIAS_BASE             HSPEC_BASE        
127 #define UALIAS_SIZE             0x10000000        
128 #define UALIAS_LIMIT            (UALIAS_BASE +    
129                                                   
130 /*                                                
131  * The bottom of ualias space is flipped depen    
132  * processor 0 or 1 within a node.                
133  */                                               
134 #ifdef CONFIG_SGI_IP27                            
135 #define UALIAS_FLIP_BASE        UALIAS_BASE       
136 #define UALIAS_FLIP_SIZE        0x20000           
137 #define UALIAS_FLIP_BIT         0x10000           
138 #define UALIAS_FLIP_ADDR(_x)    (cputoslice(sm    
139                                  (_x) ^ UALIAS    
140                                                   
141 #define LBOOT_BASE              (HSPEC_BASE +     
142 #define LBOOT_SIZE              0x10000000        
143 #define LBOOT_LIMIT             (LBOOT_BASE +     
144 #define LBOOT_STRIDE            0                 
145                                                   
146 #endif                                            
147                                                   
148 #define HUB_REGISTER_WIDGET     1                 
149 #define IALIAS_BASE             NODE_SWIN_BASE    
150 #define IALIAS_SIZE             0x800000          
151 #define IS_IALIAS(_a)           (((_a) >= IALI    
152                                  ((_a) < (IALI    
153                                                   
154 /*                                                
155  * Macro for referring to Hub's RBOOT space       
156  */                                               
157                                                   
158 #ifdef CONFIG_SGI_IP27                            
159 #define RBOOT_SIZE              0x10000000        
160 #define NODE_RBOOT_BASE(_n)     (NODE_HSPEC_BA    
161 #define NODE_RBOOT_LIMIT(_n)    (NODE_RBOOT_BA    
162                                                   
163 #endif                                            
164                                                   
165 /*                                                
166  * Macros for referring the Hub's back door sp    
167  *                                                
168  *   These macros correctly process addresses     
169  *   WARNING: They won't work in assembler.       
170  *                                                
171  *   BDDIR_ENTRY_LO returns the address of the    
172  *                  entry corresponding to a p    
173  *   BDDIR_ENTRY_HI returns the address of the    
174  *   BDPRT_ENTRY    returns the address of the    
175  *                  corresponding to the page     
176  *   BDPRT_ENTRY_S  Stores the value into the     
177  *   BDPRT_ENTRY_L  Load the value from the pr    
178  *   BDECC_ENTRY    returns the address of the    
179  *                  double-word at a specified    
180  *   BDECC_ENTRY_H  returns the address of the    
181  *                  quad-word at a specified p    
182  */                                               
183 #define NODE_BDOOR_BASE(_n)     (NODE_HSPEC_BA    
184                                                   
185 #define NODE_BDECC_BASE(_n)     (NODE_BDOOR_BA    
186 #define NODE_BDDIR_BASE(_n)     (NODE_BDOOR_BA    
187 #ifdef CONFIG_SGI_IP27                            
188 #define BDDIR_ENTRY_LO(_pa)     ((HSPEC_BASE +    
189                                   NODE_ADDRSPA    
190                                   0x200)          
191                                  UINT64_CAST(_    
192                                  UINT64_CAST(_    
193                                  UINT64_CAST(_    
194                                                   
195 #define BDDIR_ENTRY_HI(_pa)     ((HSPEC_BASE +    
196                                   NODE_ADDRSPA    
197                                   0x208)          
198                                  UINT64_CAST(_    
199                                  UINT64_CAST(_    
200                                  UINT64_CAST(_    
201                                                   
202 #define BDPRT_ENTRY(_pa, _rgn)  ((HSPEC_BASE +    
203                                   NODE_ADDRSPA    
204                                  UINT64_CAST(_    
205                                  UINT64_CAST(_    
206                                  (_rgn) << 3)     
207 #define BDPRT_ENTRY_ADDR(_pa, _rgn) (BDPRT_ENT    
208 #define BDPRT_ENTRY_S(_pa, _rgn, _val) (*(__ps    
209 #define BDPRT_ENTRY_L(_pa, _rgn)        (*(__p    
210                                                   
211 #define BDECC_ENTRY(_pa)        ((HSPEC_BASE +    
212                                   NODE_ADDRSPA    
213                                  UINT64_CAST(_    
214                                  UINT64_CAST(_    
215                                  UINT64_CAST(_    
216                                                   
217 /*                                                
218  * Macro to convert a back door directory or p    
219  *   raw physical address of the associated ca    
220  */                                               
221 #define BDADDR_IS_DIR(_ba)      ((UINT64_CAST     
222 #define BDADDR_IS_PRT(_ba)      ((UINT64_CAST     
223                                                   
224 #define BDDIR_TO_MEM(_ba)       (UINT64_CAST (    
225                                  (UINT64_CAST(    
226                                  (UINT64_CAST(    
227                                                   
228 #define BDPRT_TO_MEM(_ba)       (UINT64_CAST (    
229                                  (UINT64_CAST(    
230                                                   
231 #define BDECC_TO_MEM(_ba)       (UINT64_CAST (    
232                                  (UINT64_CAST(    
233                                  (UINT64_CAST(    
234 #endif /* CONFIG_SGI_IP27 */                      
235                                                   
236                                                   
237 /*                                                
238  * The following macros produce the correct ba    
239  * the hub registers.  The LOCAL_HUB_* macros     
240  * address for the local registers.  The REMOT    
241  * the address for the specified hub's registe    
242  * that the appropriate PI, MD, NI, or II regi    
243  * for _x.                                        
244  */                                               
245                                                   
246 /*                                                
247  * WARNING:                                       
248  *      When certain Hub chip workaround are d    
249  *      to dereference the *_HUB_ADDR() macros    
250  *      HUB_L() and HUB_S() if you must deal w    
251  *      Otherwise, the recommended approach is    
252  *      They're always safe.                      
253  */                                               
254 #define LOCAL_HUB_ADDR(_x)      (IALIAS_BASE +    
255 #define REMOTE_HUB_ADDR(_n, _x) ((NODE_SWIN_BA    
256                                                   
257 #ifndef __ASSEMBLY__                              
258                                                   
259 #define LOCAL_HUB_PTR(_x)       ((u64 *)LOCAL_    
260 #define REMOTE_HUB_PTR(_n, _x)  ((u64 *)REMOTE    
261                                                   
262 #define LOCAL_HUB_L(_r)                 __raw_    
263 #define LOCAL_HUB_S(_r, _d)             __raw_    
264 #define REMOTE_HUB_L(_n, _r)            __raw_    
265 #define REMOTE_HUB_S(_n, _r, _d)        __raw_    
266                                                   
267                                                   
268 #endif /* !__ASSEMBLY__ */                        
269                                                   
270 /*                                                
271  * Software structure locations -- permanently    
272  *    See diagram in kldir.h                      
273  */                                               
274                                                   
275 #define PHYS_RAMBASE            0x0               
276 #define K0_RAMBASE              PHYS_TO_K0(PHY    
277                                                   
278 #define EX_HANDLER_OFFSET(slice) ((slice) << 1    
279 #define EX_HANDLER_ADDR(nasid, slice)             
280         PHYS_TO_K0(NODE_OFFSET(nasid) | EX_HAN    
281 #define EX_HANDLER_SIZE         0x0400            
282                                                   
283 #define EX_FRAME_OFFSET(slice)  ((slice) << 16    
284 #define EX_FRAME_ADDR(nasid, slice)               
285         PHYS_TO_K0(NODE_OFFSET(nasid) | EX_FRA    
286 #define EX_FRAME_SIZE           0x0c00            
287                                                   
288 #define ARCS_SPB_OFFSET         0x1000            
289 #define ARCS_SPB_ADDR(nasid)                      
290         PHYS_TO_K0(NODE_OFFSET(nasid) | ARCS_S    
291 #define ARCS_SPB_SIZE           0x0400            
292                                                   
293 #define KLDIR_OFFSET            0x2000            
294 #define KLDIR_ADDR(nasid)                         
295         TO_NODE_UNCAC((nasid), KLDIR_OFFSET)      
296 #define KLDIR_SIZE              0x0400            
297                                                   
298                                                   
299 /*                                                
300  * Software structure locations -- indirected     
301  *    See diagram in kldir.h                      
302  *                                                
303  * Important:   All low memory structures must    
304  *              uncached, except for the symmo    
305  */                                               
306                                                   
307 #define KLI_LAUNCH              0                 
308 #define KLI_KLCONFIG            1                 
309 #define KLI_NMI                 2                 
310 #define KLI_GDA                 3                 
311 #define KLI_FREEMEM             4                 
312 #define KLI_SYMMON_STK          5                 
313 #define KLI_PI_ERROR            6                 
314 #define KLI_KERN_VARS           7                 
315 #define KLI_KERN_XP             8                 
316 #define KLI_KERN_PARTID         9                 
317                                                   
318 #ifndef __ASSEMBLY__                              
319                                                   
320 #define KLD_BASE(nasid)         ((kldir_ent_t     
321 #define KLD_LAUNCH(nasid)       (KLD_BASE(nasi    
322 #define KLD_NMI(nasid)          (KLD_BASE(nasi    
323 #define KLD_KLCONFIG(nasid)     (KLD_BASE(nasi    
324 #define KLD_PI_ERROR(nasid)     (KLD_BASE(nasi    
325 #define KLD_GDA(nasid)          (KLD_BASE(nasi    
326 #define KLD_SYMMON_STK(nasid)   (KLD_BASE(nasi    
327 #define KLD_FREEMEM(nasid)      (KLD_BASE(nasi    
328 #define KLD_KERN_VARS(nasid)    (KLD_BASE(nasi    
329 #define KLD_KERN_XP(nasid)      (KLD_BASE(nasi    
330 #define KLD_KERN_PARTID(nasid)  (KLD_BASE(nasi    
331                                                   
332 #define LAUNCH_OFFSET(nasid, slice)               
333         (KLD_LAUNCH(nasid)->offset +              
334          KLD_LAUNCH(nasid)->stride * (slice))     
335 #define LAUNCH_ADDR(nasid, slice)                 
336         TO_NODE_UNCAC((nasid), LAUNCH_OFFSET(n    
337 #define LAUNCH_SIZE(nasid)      KLD_LAUNCH(nas    
338                                                   
339 #define SN_NMI_OFFSET(nasid, slice)               
340         (KLD_NMI(nasid)->offset +                 
341          KLD_NMI(nasid)->stride * (slice))        
342 #define NMI_ADDR(nasid, slice)                    
343         TO_NODE_UNCAC((nasid), SN_NMI_OFFSET(n    
344 #define NMI_SIZE(nasid) KLD_NMI(nasid)->size      
345                                                   
346 #define KLCONFIG_OFFSET(nasid)  KLD_KLCONFIG(n    
347 #define KLCONFIG_ADDR(nasid)                      
348         TO_NODE_UNCAC((nasid), KLCONFIG_OFFSET    
349 #define KLCONFIG_SIZE(nasid)    KLD_KLCONFIG(n    
350                                                   
351 #define GDA_ADDR(nasid)         KLD_GDA(nasid)    
352 #define GDA_SIZE(nasid)         KLD_GDA(nasid)    
353                                                   
354 #define SYMMON_STK_OFFSET(nasid, slice)           
355         (KLD_SYMMON_STK(nasid)->offset +          
356          KLD_SYMMON_STK(nasid)->stride * (slic    
357 #define SYMMON_STK_STRIDE(nasid)        KLD_SY    
358                                                   
359 #define SYMMON_STK_ADDR(nasid, slice)             
360         TO_NODE_CAC((nasid), SYMMON_STK_OFFSET    
361                                                   
362 #define SYMMON_STK_SIZE(nasid)  KLD_SYMMON_STK    
363                                                   
364 #define SYMMON_STK_END(nasid)   (SYMMON_STK_AD    
365                                                   
366 #define NODE_OFFSET_TO_K0(_nasid, _off)           
367         PHYS_TO_K0((NODE_OFFSET(_nasid) + (_of    
368 #define NODE_OFFSET_TO_K1(_nasid, _off)           
369         TO_UNCAC((NODE_OFFSET(_nasid) + (_off)    
370                                                   
371 #define KERN_VARS_ADDR(nasid)   KLD_KERN_VARS(    
372 #define KERN_VARS_SIZE(nasid)   KLD_KERN_VARS(    
373                                                   
374 #endif /* !__ASSEMBLY__ */                        
375                                                   
376                                                   
377 #endif /* _ASM_SN_ADDRS_H */                      
378                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php