root/arch/mips/include/asm/sn/kldir.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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  * Derived from IRIX <sys/SN/kldir.h>, revision 1.21.
   7  *
   8  * Copyright (C) 1992 - 1997, 1999, 2000 Silicon Graphics, Inc.
   9  * Copyright (C) 1999, 2000 by Ralf Baechle
  10  */
  11 #ifndef _ASM_SN_KLDIR_H
  12 #define _ASM_SN_KLDIR_H
  13 
  14 
  15 /*
  16  * The kldir memory area resides at a fixed place in each node's memory and
  17  * provides pointers to most other IP27 memory areas.  This allows us to
  18  * resize and/or relocate memory areas at a later time without breaking all
  19  * firmware and kernels that use them.  Indices in the array are
  20  * permanently dedicated to areas listed below.  Some memory areas (marked
  21  * below) reside at a permanently fixed location, but are included in the
  22  * directory for completeness.
  23  */
  24 
  25 #define KLDIR_MAGIC             0x434d5f53505f5357
  26 
  27 /*
  28  * The upper portion of the memory map applies during boot
  29  * only and is overwritten by IRIX/SYMMON.
  30  *
  31  *                                    MEMORY MAP PER NODE
  32  *
  33  * 0x2000000 (32M)         +-----------------------------------------+
  34  *                         |      IO6 BUFFERS FOR FLASH ENET IOC3    |
  35  * 0x1F80000 (31.5M)       +-----------------------------------------+
  36  *                         |      IO6 TEXT/DATA/BSS/stack            |
  37  * 0x1C00000 (30M)         +-----------------------------------------+
  38  *                         |      IO6 PROM DEBUG TEXT/DATA/BSS/stack |
  39  * 0x0800000 (28M)         +-----------------------------------------+
  40  *                         |      IP27 PROM TEXT/DATA/BSS/stack      |
  41  * 0x1B00000 (27M)         +-----------------------------------------+
  42  *                         |      IP27 CFG                           |
  43  * 0x1A00000 (26M)         +-----------------------------------------+
  44  *                         |      Graphics PROM                      |
  45  * 0x1800000 (24M)         +-----------------------------------------+
  46  *                         |      3rd Party PROM drivers             |
  47  * 0x1600000 (22M)         +-----------------------------------------+
  48  *                         |                                         |
  49  *                         |      Free                               |
  50  *                         |                                         |
  51  *                         +-----------------------------------------+
  52  *                         |      UNIX DEBUG Version                 |
  53  * 0x190000 (2M--)         +-----------------------------------------+
  54  *                         |      SYMMON                             |
  55  *                         |      (For UNIX Debug only)              |
  56  * 0x34000 (208K)          +-----------------------------------------+
  57  *                         |      SYMMON STACK [NUM_CPU_PER_NODE]    |
  58  *                         |      (For UNIX Debug only)              |
  59  * 0x25000 (148K)          +-----------------------------------------+
  60  *                         |      KLCONFIG - II (temp)               |
  61  *                         |                                         |
  62  *                         |    ----------------------------         |
  63  *                         |                                         |
  64  *                         |      UNIX NON-DEBUG Version             |
  65  * 0x19000 (100K)          +-----------------------------------------+
  66  *
  67  *
  68  * The lower portion of the memory map contains information that is
  69  * permanent and is used by the IP27PROM, IO6PROM and IRIX.
  70  *
  71  * 0x19000 (100K)          +-----------------------------------------+
  72  *                         |                                         |
  73  *                         |      PI Error Spools (32K)              |
  74  *                         |                                         |
  75  * 0x12000 (72K)           +-----------------------------------------+
  76  *                         |      Unused                             |
  77  * 0x11c00 (71K)           +-----------------------------------------+
  78  *                         |      CPU 1 NMI Eframe area              |
  79  * 0x11a00 (70.5K)         +-----------------------------------------+
  80  *                         |      CPU 0 NMI Eframe area              |
  81  * 0x11800 (70K)           +-----------------------------------------+
  82  *                         |      CPU 1 NMI Register save area       |
  83  * 0x11600 (69.5K)         +-----------------------------------------+
  84  *                         |      CPU 0 NMI Register save area       |
  85  * 0x11400 (69K)           +-----------------------------------------+
  86  *                         |      GDA (1k)                           |
  87  * 0x11000 (68K)           +-----------------------------------------+
  88  *                         |      Early cache Exception stack        |
  89  *                         |             and/or                      |
  90  *                         |      kernel/io6prom nmi registers       |
  91  * 0x10800  (66k)          +-----------------------------------------+
  92  *                         |      cache error eframe                 |
  93  * 0x10400 (65K)           +-----------------------------------------+
  94  *                         |      Exception Handlers (UALIAS copy)   |
  95  * 0x10000 (64K)           +-----------------------------------------+
  96  *                         |                                         |
  97  *                         |                                         |
  98  *                         |      KLCONFIG - I (permanent) (48K)     |
  99  *                         |                                         |
 100  *                         |                                         |
 101  *                         |                                         |
 102  * 0x4000 (16K)            +-----------------------------------------+
 103  *                         |      NMI Handler (Protected Page)       |
 104  * 0x3000 (12K)            +-----------------------------------------+
 105  *                         |      ARCS PVECTORS (master node only)   |
 106  * 0x2c00 (11K)            +-----------------------------------------+
 107  *                         |      ARCS TVECTORS (master node only)   |
 108  * 0x2800 (10K)            +-----------------------------------------+
 109  *                         |      LAUNCH [NUM_CPU]                   |
 110  * 0x2400 (9K)             +-----------------------------------------+
 111  *                         |      Low memory directory (KLDIR)       |
 112  * 0x2000 (8K)             +-----------------------------------------+
 113  *                         |      ARCS SPB (1K)                      |
 114  * 0x1000 (4K)             +-----------------------------------------+
 115  *                         |      Early cache Exception stack        |
 116  *                         |             and/or                      |
 117  *                         |      kernel/io6prom nmi registers       |
 118  * 0x800  (2k)             +-----------------------------------------+
 119  *                         |      cache error eframe                 |
 120  * 0x400 (1K)              +-----------------------------------------+
 121  *                         |      Exception Handlers                 |
 122  * 0x0   (0K)              +-----------------------------------------+
 123  */
 124 
 125 #ifdef __ASSEMBLY__
 126 #define KLDIR_OFF_MAGIC                 0x00
 127 #define KLDIR_OFF_OFFSET                0x08
 128 #define KLDIR_OFF_POINTER               0x10
 129 #define KLDIR_OFF_SIZE                  0x18
 130 #define KLDIR_OFF_COUNT                 0x20
 131 #define KLDIR_OFF_STRIDE                0x28
 132 #endif /* __ASSEMBLY__ */
 133 
 134 /*
 135  * This is defined here because IP27_SYMMON_STK_SIZE must be at least what
 136  * we define here.  Since it's set up in the prom.  We can't redefine it later
 137  * and expect more space to be allocated.  The way to find out the true size
 138  * of the symmon stacks is to divide SYMMON_STK_SIZE by SYMMON_STK_STRIDE
 139  * for a particular node.
 140  */
 141 #define SYMMON_STACK_SIZE               0x8000
 142 
 143 #if defined(PROM)
 144 
 145 /*
 146  * These defines are prom version dependent.  No code other than the IP27
 147  * prom should attempt to use these values.
 148  */
 149 #define IP27_LAUNCH_OFFSET              0x2400
 150 #define IP27_LAUNCH_SIZE                0x400
 151 #define IP27_LAUNCH_COUNT               2
 152 #define IP27_LAUNCH_STRIDE              0x200
 153 
 154 #define IP27_KLCONFIG_OFFSET            0x4000
 155 #define IP27_KLCONFIG_SIZE              0xc000
 156 #define IP27_KLCONFIG_COUNT             1
 157 #define IP27_KLCONFIG_STRIDE            0
 158 
 159 #define IP27_NMI_OFFSET                 0x3000
 160 #define IP27_NMI_SIZE                   0x40
 161 #define IP27_NMI_COUNT                  2
 162 #define IP27_NMI_STRIDE                 0x40
 163 
 164 #define IP27_PI_ERROR_OFFSET            0x12000
 165 #define IP27_PI_ERROR_SIZE              0x4000
 166 #define IP27_PI_ERROR_COUNT             1
 167 #define IP27_PI_ERROR_STRIDE            0
 168 
 169 #define IP27_SYMMON_STK_OFFSET          0x25000
 170 #define IP27_SYMMON_STK_SIZE            0xe000
 171 #define IP27_SYMMON_STK_COUNT           2
 172 /* IP27_SYMMON_STK_STRIDE must be >= SYMMON_STACK_SIZE */
 173 #define IP27_SYMMON_STK_STRIDE          0x7000
 174 
 175 #define IP27_FREEMEM_OFFSET             0x19000
 176 #define IP27_FREEMEM_SIZE               -1
 177 #define IP27_FREEMEM_COUNT              1
 178 #define IP27_FREEMEM_STRIDE             0
 179 
 180 #endif /* PROM */
 181 /*
 182  * There will be only one of these in a partition so the IO6 must set it up.
 183  */
 184 #define IO6_GDA_OFFSET                  0x11000
 185 #define IO6_GDA_SIZE                    0x400
 186 #define IO6_GDA_COUNT                   1
 187 #define IO6_GDA_STRIDE                  0
 188 
 189 /*
 190  * save area of kernel nmi regs in the prom format
 191  */
 192 #define IP27_NMI_KREGS_OFFSET           0x11400
 193 #define IP27_NMI_KREGS_CPU_SIZE         0x200
 194 /*
 195  * save area of kernel nmi regs in eframe format
 196  */
 197 #define IP27_NMI_EFRAME_OFFSET          0x11800
 198 #define IP27_NMI_EFRAME_SIZE            0x200
 199 
 200 #define KLDIR_ENT_SIZE                  0x40
 201 #define KLDIR_MAX_ENTRIES               (0x400 / 0x40)
 202 
 203 #ifndef __ASSEMBLY__
 204 typedef struct kldir_ent_s {
 205         u64             magic;          /* Indicates validity of entry      */
 206         off_t           offset;         /* Offset from start of node space  */
 207         unsigned long   pointer;        /* Pointer to area in some cases    */
 208         size_t          size;           /* Size in bytes                    */
 209         u64             count;          /* Repeat count if array, 1 if not  */
 210         size_t          stride;         /* Stride if array, 0 if not        */
 211         char            rsvd[16];       /* Pad entry to 0x40 bytes          */
 212         /* NOTE: These 16 bytes are used in the Partition KLDIR
 213            entry to store partition info. Refer to klpart.h for this. */
 214 } kldir_ent_t;
 215 #endif /* !__ASSEMBLY__ */
 216 
 217 #endif /* _ASM_SN_KLDIR_H */

/* [<][>][^][v][top][bottom][index][help] */