Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * Derived from IRIX <sys/SN/kldir.h>, revision 1.21.
0004  *
0005  * Copyright (C) 1992 - 1997, 1999, 2000 Silicon Graphics, Inc.
0006  * Copyright (C) 1999, 2000 by Ralf Baechle
0007  */
0008 #ifndef _ASM_SN_SN0_KLDIR_H
0009 #define _ASM_SN_SN0_KLDIR_H
0010 
0011 
0012 /*
0013  * The kldir memory area resides at a fixed place in each node's memory and
0014  * provides pointers to most other IP27 memory areas.  This allows us to
0015  * resize and/or relocate memory areas at a later time without breaking all
0016  * firmware and kernels that use them.  Indices in the array are
0017  * permanently dedicated to areas listed below.  Some memory areas (marked
0018  * below) reside at a permanently fixed location, but are included in the
0019  * directory for completeness.
0020  */
0021 
0022 /*
0023  * The upper portion of the memory map applies during boot
0024  * only and is overwritten by IRIX/SYMMON.
0025  *
0026  *                    MEMORY MAP PER NODE
0027  *
0028  * 0x2000000 (32M)     +-----------------------------------------+
0029  *             |      IO6 BUFFERS FOR FLASH ENET IOC3    |
0030  * 0x1F80000 (31.5M)       +-----------------------------------------+
0031  *             |      IO6 TEXT/DATA/BSS/stack        |
0032  * 0x1C00000 (30M)     +-----------------------------------------+
0033  *             |      IO6 PROM DEBUG TEXT/DATA/BSS/stack |
0034  * 0x0800000 (28M)     +-----------------------------------------+
0035  *             |      IP27 PROM TEXT/DATA/BSS/stack      |
0036  * 0x1B00000 (27M)     +-----------------------------------------+
0037  *             |      IP27 CFG               |
0038  * 0x1A00000 (26M)     +-----------------------------------------+
0039  *             |      Graphics PROM              |
0040  * 0x1800000 (24M)     +-----------------------------------------+
0041  *             |      3rd Party PROM drivers         |
0042  * 0x1600000 (22M)     +-----------------------------------------+
0043  *             |                         |
0044  *             |      Free                   |
0045  *             |                         |
0046  *             +-----------------------------------------+
0047  *             |      UNIX DEBUG Version             |
0048  * 0x190000 (2M--)     +-----------------------------------------+
0049  *             |      SYMMON                 |
0050  *             |      (For UNIX Debug only)          |
0051  * 0x34000 (208K)      +-----------------------------------------+
0052  *             |      SYMMON STACK [NUM_CPU_PER_NODE]    |
0053  *             |      (For UNIX Debug only)          |
0054  * 0x25000 (148K)      +-----------------------------------------+
0055  *             |      KLCONFIG - II (temp)           |
0056  *             |                         |
0057  *             |    ----------------------------         |
0058  *             |                         |
0059  *             |      UNIX NON-DEBUG Version         |
0060  * 0x19000 (100K)      +-----------------------------------------+
0061  *
0062  *
0063  * The lower portion of the memory map contains information that is
0064  * permanent and is used by the IP27PROM, IO6PROM and IRIX.
0065  *
0066  * 0x19000 (100K)      +-----------------------------------------+
0067  *             |                         |
0068  *             |      PI Error Spools (32K)          |
0069  *             |                         |
0070  * 0x12000 (72K)       +-----------------------------------------+
0071  *             |      Unused                 |
0072  * 0x11c00 (71K)       +-----------------------------------------+
0073  *             |      CPU 1 NMI Eframe area          |
0074  * 0x11a00 (70.5K)     +-----------------------------------------+
0075  *             |      CPU 0 NMI Eframe area          |
0076  * 0x11800 (70K)       +-----------------------------------------+
0077  *             |      CPU 1 NMI Register save area       |
0078  * 0x11600 (69.5K)     +-----------------------------------------+
0079  *             |      CPU 0 NMI Register save area       |
0080  * 0x11400 (69K)       +-----------------------------------------+
0081  *             |      GDA (1k)               |
0082  * 0x11000 (68K)       +-----------------------------------------+
0083  *             |      Early cache Exception stack        |
0084  *             |         and/or              |
0085  *             |      kernel/io6prom nmi registers       |
0086  * 0x10800  (66k)      +-----------------------------------------+
0087  *             |      cache error eframe             |
0088  * 0x10400 (65K)       +-----------------------------------------+
0089  *             |      Exception Handlers (UALIAS copy)   |
0090  * 0x10000 (64K)       +-----------------------------------------+
0091  *             |                         |
0092  *             |                         |
0093  *             |      KLCONFIG - I (permanent) (48K)     |
0094  *             |                         |
0095  *             |                         |
0096  *             |                         |
0097  * 0x4000 (16K)        +-----------------------------------------+
0098  *             |      NMI Handler (Protected Page)       |
0099  * 0x3000 (12K)        +-----------------------------------------+
0100  *             |      ARCS PVECTORS (master node only)   |
0101  * 0x2c00 (11K)        +-----------------------------------------+
0102  *             |      ARCS TVECTORS (master node only)   |
0103  * 0x2800 (10K)        +-----------------------------------------+
0104  *             |      LAUNCH [NUM_CPU]           |
0105  * 0x2400 (9K)         +-----------------------------------------+
0106  *             |      Low memory directory (KLDIR)       |
0107  * 0x2000 (8K)         +-----------------------------------------+
0108  *             |      ARCS SPB (1K)              |
0109  * 0x1000 (4K)         +-----------------------------------------+
0110  *             |      Early cache Exception stack        |
0111  *             |         and/or              |
0112  *             |      kernel/io6prom nmi registers       |
0113  * 0x800  (2k)         +-----------------------------------------+
0114  *             |      cache error eframe             |
0115  * 0x400 (1K)          +-----------------------------------------+
0116  *             |      Exception Handlers             |
0117  * 0x0   (0K)          +-----------------------------------------+
0118  */
0119 
0120 /*
0121  * This is defined here because IP27_SYMMON_STK_SIZE must be at least what
0122  * we define here.  Since it's set up in the prom.  We can't redefine it later
0123  * and expect more space to be allocated.  The way to find out the true size
0124  * of the symmon stacks is to divide SYMMON_STK_SIZE by SYMMON_STK_STRIDE
0125  * for a particular node.
0126  */
0127 #define SYMMON_STACK_SIZE       0x8000
0128 
0129 #if defined(PROM)
0130 
0131 /*
0132  * These defines are prom version dependent.  No code other than the IP27
0133  * prom should attempt to use these values.
0134  */
0135 #define IP27_LAUNCH_OFFSET      0x2400
0136 #define IP27_LAUNCH_SIZE        0x400
0137 #define IP27_LAUNCH_COUNT       2
0138 #define IP27_LAUNCH_STRIDE      0x200
0139 
0140 #define IP27_KLCONFIG_OFFSET        0x4000
0141 #define IP27_KLCONFIG_SIZE      0xc000
0142 #define IP27_KLCONFIG_COUNT     1
0143 #define IP27_KLCONFIG_STRIDE        0
0144 
0145 #define IP27_NMI_OFFSET         0x3000
0146 #define IP27_NMI_SIZE           0x40
0147 #define IP27_NMI_COUNT          2
0148 #define IP27_NMI_STRIDE         0x40
0149 
0150 #define IP27_PI_ERROR_OFFSET        0x12000
0151 #define IP27_PI_ERROR_SIZE      0x4000
0152 #define IP27_PI_ERROR_COUNT     1
0153 #define IP27_PI_ERROR_STRIDE        0
0154 
0155 #define IP27_SYMMON_STK_OFFSET      0x25000
0156 #define IP27_SYMMON_STK_SIZE        0xe000
0157 #define IP27_SYMMON_STK_COUNT       2
0158 /* IP27_SYMMON_STK_STRIDE must be >= SYMMON_STACK_SIZE */
0159 #define IP27_SYMMON_STK_STRIDE      0x7000
0160 
0161 #define IP27_FREEMEM_OFFSET     0x19000
0162 #define IP27_FREEMEM_SIZE       -1
0163 #define IP27_FREEMEM_COUNT      1
0164 #define IP27_FREEMEM_STRIDE     0
0165 
0166 #endif /* PROM */
0167 /*
0168  * There will be only one of these in a partition so the IO6 must set it up.
0169  */
0170 #define IO6_GDA_OFFSET          0x11000
0171 #define IO6_GDA_SIZE            0x400
0172 #define IO6_GDA_COUNT           1
0173 #define IO6_GDA_STRIDE          0
0174 
0175 /*
0176  * save area of kernel nmi regs in the prom format
0177  */
0178 #define IP27_NMI_KREGS_OFFSET       0x11400
0179 #define IP27_NMI_KREGS_CPU_SIZE     0x200
0180 /*
0181  * save area of kernel nmi regs in eframe format
0182  */
0183 #define IP27_NMI_EFRAME_OFFSET      0x11800
0184 #define IP27_NMI_EFRAME_SIZE        0x200
0185 
0186 #endif /* _ASM_SN_SN0_KLDIR_H */