[BACK]Return to rpb.h CVS log [TXT][DIR] Up to [local] / sys / arch / alpha / include

Annotation of sys/arch/alpha/include/rpb.h, Revision 1.1.1.1

1.1       nbrk        1: /* $OpenBSD: rpb.h,v 1.10 2004/01/13 06:21:09 deraadt Exp $ */
                      2: /* $NetBSD: rpb.h,v 1.38 2000/07/06 23:29:13 thorpej Exp $ */
                      3:
                      4: /*
                      5:  * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
                      6:  * All rights reserved.
                      7:  *
                      8:  * Author: Keith Bostic, Chris G. Demetriou
                      9:  *
                     10:  * Permission to use, copy, modify and distribute this software and
                     11:  * its documentation is hereby granted, provided that both the copyright
                     12:  * notice and this permission notice appear in all copies of the
                     13:  * software, derivative works or modified versions, and any portions
                     14:  * thereof, and that both notices appear in supporting documentation.
                     15:  *
                     16:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
                     17:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
                     18:  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
                     19:  *
                     20:  * Carnegie Mellon requests users of this software to return to
                     21:  *
                     22:  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
                     23:  *  School of Computer Science
                     24:  *  Carnegie Mellon University
                     25:  *  Pittsburgh PA 15213-3890
                     26:  *
                     27:  * any improvements or extensions that they make and grant Carnegie the
                     28:  * rights to redistribute these changes.
                     29:  */
                     30:
                     31: /*
                     32:  * From DEC 3000 300/400/500/600/700/800/900 System Programmer's Manual,
                     33:  * EK-D3SYS-PM.B01.
                     34:  */
                     35:
                     36: /*
                     37:  * HWRPB (Hardware Restart Parameter Block).
                     38:  */
                     39: #define        HWRPB_ADDR      0x10000000              /* virtual address, at boot */
                     40:
                     41: #ifndef        ASSEMBLER
                     42: struct rpb {
                     43:        u_int64_t       rpb_phys;               /*   0: HWRPB phys. address. */
                     44:        char            rpb_magic[8];           /*   8: "HWRPB" (in ASCII) */
                     45:        u_int64_t       rpb_version;            /*  10 */
                     46:        u_int64_t       rpb_size;               /*  18: HWRPB size in bytes */
                     47:        u_int64_t       rpb_primary_cpu_id;     /*  20 */
                     48:        u_int64_t       rpb_page_size;          /*  28: (8192) */
                     49:        u_int32_t       rpb_phys_addr_size;     /*  30: physical address size */
                     50:        u_int32_t       rpb_extended_va_size;   /*  34: extended VA size (4L) */
                     51:        u_int64_t       rpb_max_asn;            /*  38:   (16) */
                     52:        char            rpb_ssn[16];            /*  40: only first 10 valid */
                     53:
                     54: #define        ST_ADU                  1               /* Alpha Demo. Unit (?) */
                     55: #define        ST_DEC_4000             2               /* "Cobra" */
                     56: #define        ST_DEC_7000             3               /* "Ruby" */
                     57: #define        ST_DEC_3000_500         4               /* "Flamingo" family (TC) */
                     58: #define        ST_DEC_2000_300         6               /* "Jensen" (EISA/ISA) */
                     59: #define        ST_DEC_3000_300         7               /* "Pelican" (TC) */
                     60: #define        ST_AVALON_A12           8               /* XXX Avalon Multicomputer */
                     61: #define        ST_DEC_2100_A500        9               /* "Sable" */
                     62: #define        ST_DEC_APXVME_64        10              /* "AXPvme" (VME) */
                     63: #define        ST_DEC_AXPPCI_33        11              /* "NoName" (PCI/ISA) */
                     64: #define        ST_DEC_21000            12              /* "TurboLaser" (PCI/EISA) */
                     65: #define        ST_DEC_2100_A50         13              /* "Avanti" (PCI/ISA) */
                     66: #define        ST_DEC_MUSTANG          14              /* "Mustang" */
                     67: #define        ST_DEC_KN20AA           15              /* kn20aa (PCI/EISA) */
                     68: #define        ST_DEC_1000             17              /* "Mikasa" (PCI/EISA) */
                     69: #define        ST_EB66                 19              /* EB66 (PCI/ISA?) */
                     70: #define        ST_EB64P                20              /* EB64+ (PCI/ISA?) */
                     71: #define        ST_ALPHABOOK1           21              /* Alphabook1 */
                     72: #define        ST_DEC_4100             22              /* "Rawhide" (PCI/EISA) */
                     73: #define        ST_DEC_EV45_PBP         23              /* "Lego" K2 Passive SBC */
                     74: #define        ST_DEC_2100A_A500       24              /* "Lynx" */
                     75: #define        ST_EB164                26              /* EB164 (PCI/ISA) */
                     76: #define        ST_DEC_1000A            27              /* "Noritake" (PCI/EISA)*/
                     77: #define        ST_DEC_ALPHAVME_224     28              /* "Cortex" */
                     78: #define        ST_DEC_550              30              /* "Miata" (PCI/ISA) */
                     79: #define        ST_DEC_EV56_PBP         32              /* "Takara" */
                     80: #define        ST_DEC_ALPHAVME_320     33              /* "Yukon" (VME) */
                     81: #define        ST_DEC_6600             34              /* EV6-Tsunami based systems */
                     82: #define        ST_DEC_WILDFIRE         35              /* "Wildfire" */
                     83: #define        ST_DEC_CUSCO            36              /* "CUSCO" */
                     84: #define        ST_DEC_EIGER            37              /* "Eiger" */
                     85:
                     86:        /* Alpha Processor, Inc. systypes */
                     87: #define        ST_API_NAUTILUS         201             /* EV6-AMD 751 UP1000 */
                     88:
                     89:        u_int64_t       rpb_type;               /*  50: */
                     90:
                     91: #define        SV_MPCAP                0x00000001      /* multiprocessor capable */
                     92:
                     93: #define        SV_CONSOLE              0x0000001e      /* console hardware mask */
                     94: #define        SV_CONSOLE_DETACHED     0x00000002
                     95: #define        SV_CONSOLE_EMBEDDED     0x00000004
                     96:
                     97: #define        SV_POWERFAIL            0x000000e0      /* powerfail mask */
                     98: #define        SV_PF_UNITED            0x00000020
                     99: #define        SV_PF_SEPARATE          0x00000040
                    100: #define        SV_PF_BBACKUP           0x00000060
                    101: #define        SV_PF_ACTION            0x00000100      /* powerfail restart */
                    102:
                    103: #define        SV_GRAPHICS             0x00000200      /* graphic engine present */
                    104:
                    105: #define        SV_ST_MASK              0x0000fc00      /* system type mask */
                    106: #define        SV_ST_RESERVED          0x00000000      /* RESERVED */
                    107:
                    108: /*
                    109:  * System types for the DEC 3000/500 (Flamingo) Family
                    110:  */
                    111: #define        SV_ST_SANDPIPER         0x00000400      /* Sandpiper;   3000/400 */
                    112: #define        SV_ST_FLAMINGO          0x00000800      /* Flamingo;    3000/500 */
                    113: #define        SV_ST_HOTPINK           0x00000c00      /* "Hot Pink";  3000/500X */
                    114: #define        SV_ST_FLAMINGOPLUS      0x00001000      /* Flamingo+;   3000/800 */
                    115: #define        SV_ST_ULTRA             0x00001400      /* "Ultra", aka Flamingo+ */
                    116: #define        SV_ST_SANDPLUS          0x00001800      /* Sandpiper+;  3000/600 */
                    117: #define        SV_ST_SANDPIPER45       0x00001c00      /* Sandpiper45; 3000/700 */
                    118: #define        SV_ST_FLAMINGO45        0x00002000      /* Flamingo45;  3000/900 */
                    119:
                    120: /*
                    121:  * System types for ???
                    122:  */
                    123: #define        SV_ST_SABLE             0x00000400      /* Sable (???) */
                    124:
                    125: /*
                    126:  * System types for the DEC 3000/300 (Pelican) Family
                    127:  */
                    128: #define        SV_ST_PELICAN           0x00000000      /* Pelican;      3000/300 */
                    129: #define        SV_ST_PELICA            0x00000400      /* Pelica;       3000/300L */
                    130: #define        SV_ST_PELICANPLUS       0x00000800      /* Pelican+;     3000/300X */
                    131: #define        SV_ST_PELICAPLUS        0x00000c00      /* Pelica+;      3000/300LX */
                    132:
                    133: /*
                    134:  * System types for the AlphaStation Family
                    135:  */
                    136: #define        SV_ST_AVANTI            0x00000000      /* Avanti;      400 4/233 */
                    137: #define        SV_ST_MUSTANG2_4_166    0x00000800      /* Mustang II;  200 4/166 */
                    138: #define        SV_ST_MUSTANG2_4_233    0x00001000      /* Mustang II;  200 4/233 */
                    139: #define        SV_ST_AVANTI_XXX        0x00001400      /* also Avanti; 400 4/233 */
                    140: #define        SV_ST_AVANTI_4_266      0x00002000
                    141: #define        SV_ST_MUSTANG2_4_100    0x00002400      /* Mustang II;  200 4/100 */
                    142: #define        SV_ST_AVANTI_4_233      0x0000a800      /* AlphaStation 255/233 */
                    143:
                    144: #define        SV_ST_KN20AA            0x00000400      /* AlphaStation 500/600 */
                    145:
                    146: /*
                    147:  * System types for the AXPvme Family
                    148:  */
                    149: #define        SV_ST_AXPVME_64         0x00000000      /* 21068, 64MHz */
                    150: #define        SV_ST_AXPVME_160        0x00000400      /* 21066, 160MHz */
                    151: #define        SV_ST_AXPVME_100        0x00000c00      /* 21066A, 99MHz */
                    152: #define        SV_ST_AXPVME_230        0x00001000      /* 21066A, 231MHz */
                    153: #define        SV_ST_AXPVME_66         0x00001400      /* 21066A, 66MHz */
                    154: #define        SV_ST_AXPVME_166        0x00001800      /* 21066A, 165MHz */
                    155: #define        SV_ST_AXPVME_264        0x00001c00      /* 21066A, 264MHz */
                    156:
                    157: /*
                    158:  * System types for the EB164 Family
                    159:  */
                    160: #define        SV_ST_EB164_266         0x00000400      /* EB164, 266MHz */
                    161: #define        SV_ST_EB164_300         0x00000800      /* EB164, 300MHz */
                    162: #define        SV_ST_ALPHAPC164_366    0x00000c00      /* AlphaPC164, 366MHz */
                    163: #define        SV_ST_ALPHAPC164_400    0x00001000      /* AlphaPC164, 400MHz */
                    164: #define        SV_ST_ALPHAPC164_433    0x00001400      /* AlphaPC164, 433MHz */
                    165: #define        SV_ST_ALPHAPC164_466    0x00001800      /* AlphaPC164, 466MHz */
                    166: #define        SV_ST_ALPHAPC164_500    0x00001c00      /* AlphaPC164, 500MHz */
                    167: #define        SV_ST_ALPHAPC164LX_400  0x00002000      /* AlphaPC164LX, 400MHz */
                    168: #define        SV_ST_ALPHAPC164LX_466  0x00002400      /* AlphaPC164LX, 466MHz */
                    169: #define        SV_ST_ALPHAPC164LX_533  0x00002800      /* AlphaPC164LX, 533MHz */
                    170: #define        SV_ST_ALPHAPC164LX_600  0x00002c00      /* AlphaPC164LX, 600MHz */
                    171: #define        SV_ST_ALPHAPC164SX_400  0x00003000      /* AlphaPC164SX, 400MHz */
                    172: #define        SV_ST_ALPHAPC164SX_466  0x00003400      /* AlphaPC164SX, 433MHz */
                    173: #define        SV_ST_ALPHAPC164SX_533  0x00003800      /* AlphaPC164SX, 533MHz */
                    174: #define        SV_ST_ALPHAPC164SX_600  0x00003c00      /* AlphaPC164SX, 600MHz */
                    175:
                    176: /*
                    177:  * System types for the Digital Personal Workstation (Miata) Family
                    178:  * XXX These are not very complete!
                    179:  */
                    180: #define        SV_ST_MIATA_1_5         0x00004c00      /* Miata 1.5 */
                    181:
                    182:        u_int64_t       rpb_variation;          /*  58 */
                    183:
                    184:        char            rpb_revision[8];        /*  60; only first 4 valid */
                    185:        u_int64_t       rpb_intr_freq;          /*  68; scaled by 4096 */
                    186:        u_int64_t       rpb_cc_freq;            /*  70: cycle cntr frequency */
                    187:        u_long          rpb_vptb;               /*  78: */
                    188:        u_int64_t       rpb_reserved_arch;      /*  80: */
                    189:        u_long          rpb_tbhint_off;         /*  88: */
                    190:        u_int64_t       rpb_pcs_cnt;            /*  90: */
                    191:        u_int64_t       rpb_pcs_size;           /*  98; pcs size in bytes */
                    192:        u_long          rpb_pcs_off;            /*  A0: offset to pcs info */
                    193:        u_int64_t       rpb_ctb_cnt;            /*  A8: console terminal */
                    194:        u_int64_t       rpb_ctb_size;           /*  B0: ctb size in bytes */
                    195:        u_long          rpb_ctb_off;            /*  B8: offset to ctb */
                    196:        u_long          rpb_crb_off;            /*  C0: offset to crb */
                    197:        u_long          rpb_memdat_off;         /*  C8: memory data offset */
                    198:        u_long          rpb_condat_off;         /*  D0: config data offset */
                    199:        u_long          rpb_fru_off;            /*  D8: FRU table offset */
                    200:        u_int64_t       rpb_save_term;          /*  E0: terminal save */
                    201:        u_int64_t       rpb_save_term_val;      /*  E8: */
                    202:        u_int64_t       rpb_rest_term;          /*  F0: terminal restore */
                    203:        u_int64_t       rpb_rest_term_val;      /*  F8: */
                    204:        u_int64_t       rpb_restart;            /* 100: restart */
                    205:        u_int64_t       rpb_restart_val;        /* 108: */
                    206:        u_int64_t       rpb_reserve_os;         /* 110: */
                    207:        u_int64_t       rpb_reserve_hw;         /* 118: */
                    208:        u_int64_t       rpb_checksum;           /* 120: HWRPB checksum */
                    209:        u_int64_t       rpb_rxrdy;              /* 128: receive ready */
                    210:        u_int64_t       rpb_txrdy;              /* 130: transmit ready */
                    211:        u_long          rpb_dsrdb_off;          /* 138: HWRPB + DSRDB offset */
                    212:        u_int64_t       rpb_tbhint[8];          /* 149: TB hint block */
                    213: };
                    214:
                    215: #define        LOCATE_PCS(h,cpunumber) ((struct pcs *) \
                    216:        ((char *)(h) + (h)->rpb_pcs_off + ((cpunumber) * (h)->rpb_pcs_size)))
                    217:
                    218: /*
                    219:  * PCS: Per-CPU information.
                    220:  */
                    221: struct pcs {
                    222:        u_int8_t        pcs_hwpcb[128];         /*   0: PAL dependent */
                    223:
                    224: #define        PCS_BIP                 0x000001        /* boot in progress */
                    225: #define        PCS_RC                  0x000002        /* restart possible */
                    226: #define        PCS_PA                  0x000004        /* processor available */
                    227: #define        PCS_PP                  0x000008        /* processor present */
                    228: #define        PCS_OH                  0x000010        /* user halted */
                    229: #define        PCS_CV                  0x000020        /* context valid */
                    230: #define        PCS_PV                  0x000040        /* PALcode valid */
                    231: #define        PCS_PMV                 0x000080        /* PALcode memory valid */
                    232: #define        PCS_PL                  0x000100        /* PALcode loaded */
                    233:
                    234: #define        PCS_HALT_REQ            0xff0000        /* halt request mask */
                    235: #define        PCS_HALT_DEFAULT        0x000000
                    236: #define        PCS_HALT_SAVE_EXIT      0x010000
                    237: #define        PCS_HALT_COLD_BOOT      0x020000
                    238: #define        PCS_HALT_WARM_BOOT      0x030000
                    239: #define        PCS_HALT_STAY_HALTED    0x040000
                    240: #define        PCS_mbz       0xffffffffff000000        /* 24:63 -- must be zero */
                    241:        u_int64_t       pcs_flags;              /*  80: */
                    242:
                    243:        u_int64_t       pcs_pal_memsize;        /*  88: PAL memory size */
                    244:        u_int64_t       pcs_pal_scrsize;        /*  90: PAL scratch size */
                    245:        u_long          pcs_pal_memaddr;        /*  98: PAL memory addr */
                    246:        u_long          pcs_pal_scraddr;        /*  A0: PAL scratch addr */
                    247:        struct {
                    248:                u_int64_t
                    249:                        minorrev        : 8,    /* alphabetic char 'a' - 'z' */
                    250:                        majorrev        : 8,    /* alphabetic char 'a' - 'z' */
                    251: #define        PAL_TYPE_STANDARD       0
                    252: #define        PAL_TYPE_VMS            1
                    253: #define        PAL_TYPE_OSF1           2
                    254:                        pal_type        : 8,    /* PALcode type:
                    255:                                                 * 0 == standard
                    256:                                                 * 1 == OpenVMS
                    257:                                                 * 2 == OSF/1
                    258:                                                 * 3-127 DIGITAL reserv.
                    259:                                                 * 128-255 non-DIGITAL reserv.
                    260:                                                 */
                    261:                        sbz1            : 8,
                    262:                        compatibility   : 16,   /* Compatibility revision */
                    263:                        proc_cnt        : 16;   /* Processor count */
                    264:        } pcs_pal_rev;                          /*  A8: */
                    265: #define pcs_minorrev   pcs_pal_rev.minorrev
                    266: #define pcs_majorrev   pcs_pal_rev.majorrev
                    267: #define pcs_pal_type   pcs_pal_rev.pal_type
                    268: #define pcs_compatibility      pcs_pal_rev.compatibility
                    269: #define pcs_proc_cnt   pcs_pal_rev.proc_cnt
                    270:
                    271:        u_int64_t       pcs_proc_type;          /*  B0: processor type */
                    272:
                    273: #define        PCS_PROC_EV3            1                       /* EV3 */
                    274: #define        PCS_PROC_EV4            2                       /* EV4: 21064 */
                    275: #define        PCS_PROC_SIMULATION     3                       /* Simulation */
                    276: #define        PCS_PROC_LCA4           4                       /* LCA4: 2106[68] */
                    277: #define        PCS_PROC_EV5            5                       /* EV5: 21164 */
                    278: #define        PCS_PROC_EV45           6                       /* EV45: 21064A */
                    279: #define        PCS_PROC_EV56           7                       /* EV56: 21164A */
                    280: #define        PCS_PROC_EV6            8                       /* EV6: 21264 */
                    281: #define        PCS_PROC_PCA56          9                       /* PCA56: 21164PC */
                    282: #define        PCS_PROC_PCA57          10                      /* PCA57: 21164?? */
                    283: #define        PCS_PROC_EV67           11                      /* EV67: 21246A */
                    284: #define        PCS_PROC_EV68CB         12                      /* EV68CB: 21264C */
                    285: #define        PCS_PROC_EV68AL         13                      /* EV68AL: 21264B */
                    286: #define        PCS_PROC_EV68CX         14                      /* EV68CX: 21264D */
                    287:
                    288: #define        PCS_CPU_MAJORTYPE(p) ((p)->pcs_proc_type & 0xffffffff)
                    289: #define        PCS_CPU_MINORTYPE(p) ((p)->pcs_proc_type >> 32)
                    290:
                    291:        /* Minor number interpretation is processor specific.  See cpu.c. */
                    292:
                    293:        u_int64_t       pcs_proc_var;           /* B8: processor variation. */
                    294:
                    295: #define        PCS_VAR_VAXFP           0x0000000000000001      /* VAX FP support */
                    296: #define        PCS_VAR_IEEEFP          0x0000000000000002      /* IEEE FP support */
                    297: #define        PCS_VAR_PE              0x0000000000000004      /* Primary Eligible */
                    298: #define        PCS_VAR_RESERVED        0xfffffffffffffff8      /* Reserved */
                    299:
                    300:        char            pcs_proc_revision[8];   /*  C0: only first 4 valid */
                    301:        char            pcs_proc_sn[16];        /*  C8: only first 10 valid */
                    302:        u_long          pcs_machcheck;          /*  D8: mach chk phys addr. */
                    303:        u_int64_t       pcs_machcheck_len;      /*  E0: length in bytes */
                    304:        u_long          pcs_halt_pcbb;          /*  E8: phys addr of halt PCB */
                    305:        u_long          pcs_halt_pc;            /*  F0: halt PC */
                    306:        u_int64_t       pcs_halt_ps;            /*  F8: halt PS */
                    307:        u_int64_t       pcs_halt_r25;           /* 100: halt argument list */
                    308:        u_int64_t       pcs_halt_r26;           /* 108: halt return addr list */
                    309:        u_int64_t       pcs_halt_r27;           /* 110: halt procedure value */
                    310:
                    311: #define        PCS_HALT_RESERVED               0
                    312: #define        PCS_HALT_POWERUP                1
                    313: #define        PCS_HALT_CONSOLE_HALT           2
                    314: #define        PCS_HALT_CONSOLE_CRASH          3
                    315: #define        PCS_HALT_KERNEL_MODE            4
                    316: #define        PCS_HALT_KERNEL_STACK_INVALID   5
                    317: #define        PCS_HALT_DOUBLE_ERROR_ABORT     6
                    318: #define        PCS_HALT_SCBB                   7
                    319: #define        PCS_HALT_PTBR                   8       /* 9-FF: reserved */
                    320:        u_int64_t       pcs_halt_reason;        /* 118: */
                    321:
                    322:        u_int64_t       pcs_reserved_soft;      /* 120: preserved software */
                    323:
                    324:        struct {                                /* 128: inter-console buffers */
                    325:                u_int   iccb_rxlen;
                    326:                u_int   iccb_txlen;
                    327:                char    iccb_rxbuf[80];
                    328:                char    iccb_txbuf[80];
                    329:        } pcs_iccb;
                    330:
                    331: #define        PALvar_reserved 0
                    332: #define        PALvar_OpenVMS  1
                    333: #define        PALvar_OSF1     2
                    334:        u_int64_t       pcs_palrevisions[16];   /* 1D0: PALcode revisions */
                    335:
                    336:        u_int64_t       pcs_reserved_arch[6];   /* 250: reserved arch */
                    337: };
                    338:
                    339: /*
                    340:  * CTB: Console Terminal Block
                    341:  */
                    342: struct ctb {
                    343:        u_int64_t       ctb_type;               /*   0: CTB type */
                    344:        u_int64_t       ctb_unit;               /*   8: */
                    345:        u_int64_t       ctb_reserved;           /*  16: */
                    346:        u_int64_t       ctb_len;                /*  24: bytes of info */
                    347:        u_int64_t       ctb_ipl;                /*  32: console ipl level */
                    348:        u_long          ctb_tintr_vec;          /*  40: transmit vec (0x800) */
                    349:        u_long          ctb_rintr_vec;          /*  48: receive vec (0x800) */
                    350:
                    351: #define        CTB_NONE                0x00            /* no console present */
                    352: #define        CTB_SERVICE             0x01            /* service processor */
                    353: #define        CTB_PRINTERPORT         0x02            /* printer port on the SCC */
                    354: #define        CTB_GRAPHICS            0x03            /* graphics device */
                    355: #define        CTB_TYPE4               0x04            /* type 4 CTB */
                    356: #define        CTB_NETWORK             0xC0            /* network device */
                    357:        u_int64_t       ctb_term_type;          /*  56: terminal type */
                    358:
                    359:        u_int64_t       ctb_keybd_type;         /*  64: keyboard nationality */
                    360:        u_long          ctb_keybd_trans;        /*  72: trans. table addr */
                    361:        u_long          ctb_keybd_map;          /*  80: map table addr */
                    362:        u_int64_t       ctb_keybd_state;        /*  88: keyboard flags */
                    363:        u_int64_t       ctb_keybd_last;         /*  96: last key entered */
                    364:        u_long          ctb_font_us;            /* 104: US font table addr */
                    365:        u_long          ctb_font_mcs;           /* 112: MCS font table addr */
                    366:        u_int64_t       ctb_font_width;         /* 120: font width, height */
                    367:        u_int64_t       ctb_font_height;        /* 128:         in pixels */
                    368:        u_int64_t       ctb_mon_width;          /* 136: monitor width, height */
                    369:        u_int64_t       ctb_mon_height;         /* 144:         in pixels */
                    370:        u_int64_t       ctb_dpi;                /* 152: monitor dots per inch */
                    371:        u_int64_t       ctb_planes;             /* 160: # of planes */
                    372:        u_int64_t       ctb_cur_width;          /* 168: cursor width, height */
                    373:        u_int64_t       ctb_cur_height;         /* 176:         in pixels */
                    374:        u_int64_t       ctb_head_cnt;           /* 184: # of heads */
                    375:        u_int64_t       ctb_opwindow;           /* 192: opwindow on screen */
                    376:        u_long          ctb_head_offset;        /* 200: offset to head info */
                    377:        u_long          ctb_putchar;            /* 208: output char to TURBO */
                    378:        u_int64_t       ctb_io_state;           /* 216: I/O flags */
                    379:        u_int64_t       ctb_listen_state;       /* 224: listener flags */
                    380:        u_long          ctb_xaddr;              /* 232: extended info addr */
                    381:        u_int64_t       ctb_turboslot;          /* 248: TURBOchannel slot # */
                    382:        u_int64_t       ctb_server_off;         /* 256: offset to server info */
                    383:        u_int64_t       ctb_line_off;           /* 264: line parameter offset */
                    384:        u_int8_t        ctb_csd;                /* 272: console specific data */
                    385: };
                    386:
                    387: struct ctb_tt {
                    388:        u_int64_t       ctb_type;               /*   0: CTB type */
                    389:        u_int64_t       ctb_unit;               /*   8: console unit */
                    390:        u_int64_t       ctb_reserved;           /*  16: reserved */
                    391:        u_int64_t       ctb_length;             /*  24: length */
                    392:        u_int64_t       ctb_csr;                /*  32: address */
                    393:        u_int64_t       ctb_tivec;              /*  40: Tx intr vector */
                    394:        u_int64_t       ctb_rivec;              /*  48: Rx intr vector */
                    395:        u_int64_t       ctb_baud;               /*  56: baud rate */
                    396:        u_int64_t       ctb_put_sts;            /*  64: PUTS status */
                    397:        u_int64_t       ctb_get_sts;            /*  72: GETS status */
                    398:        u_int64_t       ctb_reserved0;          /*  80: reserved */
                    399: };
                    400:
                    401: /*
                    402:  * Format of the Console Terminal Block Type 4 `turboslot' field:
                    403:  *
                    404:  *  63                   40 39       32 31     24 23      16 15   8 7    0
                    405:  *  |      reserved        |  channel  |  hose   | bus type |  bus | slot|
                    406:  */
                    407: #define        CTB_TURBOSLOT_CHANNEL(x)        (((x) >> 32) & 0xff)
                    408: #define        CTB_TURBOSLOT_HOSE(x)           (((x) >> 24) & 0xff)
                    409: #define        CTB_TURBOSLOT_TYPE(x)           (((x) >> 16) & 0xff)
                    410: #define        CTB_TURBOSLOT_BUS(x)            (((x) >> 8) & 0xff)
                    411: #define        CTB_TURBOSLOT_SLOT(x)           ((x) & 0xff)
                    412:
                    413: #define        CTB_TURBOSLOT_TYPE_TC           0       /* TURBOchannel */
                    414: #define        CTB_TURBOSLOT_TYPE_ISA          1       /* ISA */
                    415: #define        CTB_TURBOSLOT_TYPE_EISA         2       /* EISA */
                    416: #define        CTB_TURBOSLOT_TYPE_PCI          3       /* PCI */
                    417:
                    418: /*
                    419:  * CRD: Console Routine Descriptor
                    420:  */
                    421: struct crd {
                    422:        int64_t         descriptor;
                    423:        u_int64_t       entry_va;
                    424: };
                    425:
                    426: /*
                    427:  * CRB: Console Routine Block
                    428:  */
                    429: struct crb {
                    430:        struct crd      *crb_v_dispatch;        /*   0: virtual dispatch addr */
                    431:        u_long           crb_p_dispatch;        /*   8: phys dispatch addr */
                    432:        struct crd      *crb_v_fixup;           /*  10: virtual fixup addr */
                    433:        u_long           crb_p_fixup;           /*  18: phys fixup addr */
                    434:        u_int64_t        crb_map_cnt;           /*  20: phys/virt map entries */
                    435:        u_int64_t        crb_page_cnt;          /*  28: pages to be mapped */
                    436: };
                    437:
                    438: /*
                    439:  * MDDT: Memory Data Descriptor Table
                    440:  */
                    441: struct mddt {
                    442:        int64_t         mddt_cksum;             /*   0: 7-N checksum */
                    443:        u_long          mddt_physaddr;          /*   8: bank config addr
                    444:                                                 * IMPLEMENTATION SPECIFIC
                    445:                                                 */
                    446:        u_int64_t       mddt_cluster_cnt;       /*  10: memory cluster count */
                    447:        struct mddt_cluster {
                    448:                u_long          mddt_pfn;       /*   0: starting PFN */
                    449:                u_int64_t       mddt_pg_cnt;    /*   8: 8KB page count */
                    450:                u_int64_t       mddt_pg_test;   /*  10: tested page count */
                    451:                u_long          mddt_v_bitaddr; /*  18: bitmap virt addr */
                    452:                u_long          mddt_p_bitaddr; /*  20: bitmap phys addr */
                    453:                int64_t         mddt_bit_cksum; /*  28: bitmap checksum */
                    454:
                    455: #define        MDDT_NONVOLATILE                0x10    /* cluster is non-volatile */
                    456: #define        MDDT_PALCODE                    0x01    /* console and PAL only */
                    457: #define        MDDT_SYSTEM                     0x00    /* system software only */
                    458: #define        MDDT_mbz          0xfffffffffffffffc    /* 2:63 -- must be zero */
                    459:                int64_t         mddt_usage;     /*  30: bitmap permissions */
                    460:        } mddt_clusters[1];                     /* variable length array */
                    461: };
                    462:
                    463: /*
                    464:  * DSR: Dynamic System Recognition.  We're interested in the sysname
                    465:  * offset.  The data pointed to by sysname is:
                    466:  *
                    467:  *     [8 bytes: length of system name][N bytes: system name string]
                    468:  *
                    469:  * The system name string is NUL-terminated.
                    470:  */
                    471: struct dsrdb {
                    472:        int64_t         dsr_smm;                /*  0: SMM number */
                    473:        u_int64_t       dsr_lurt_off;           /*  8: LURT table offset */
                    474:        u_int64_t       dsr_sysname_off;        /* 16: offset to sysname */
                    475: };
                    476:
                    477: /*
                    478:  * The DSR appeared in version 5 of the HWRPB.
                    479:  */
                    480: #define        HWRPB_DSRDB_MINVERS     5
                    481:
                    482: #ifdef _KERNEL
                    483: extern int cputype;
                    484: extern struct rpb *hwrpb;
                    485: #endif
                    486:
                    487: #endif /* ASSEMBLER */

CVSweb