rpb.h revision 1.8 1 /* $NetBSD: rpb.h,v 1.8 2002/12/01 21:21:45 matt Exp $ */
2 /*
3 * Copyright (c) 1995 Ludd, University of Lule}, Sweden.
4 * All rights reserved.
5 *
6 * This code is derived from software contributed to Ludd by Bertram Barth.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. All advertising materials mentioning features or use of this software
17 * must display the following acknowledgement:
18 * This product includes software developed at Ludd, University of
19 * Lule}, Sweden and its contributors.
20 * 4. The name of the author may not be used to endorse or promote products
21 * derived from this software without specific prior written permission
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
24 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
25 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
26 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
27 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
28 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
32 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 */
34 #ifndef _VAX_RPB_H_
35 #define _VAX_RPB_H_
36
37 /*
38 * Look at "VAX/VMS Internals and Data Structures" around page 907
39 * to get more info about RPB.
40 */
41
42 struct rpb { /* size description */
43 struct rpb *rpb_base; /* 4 physical base address of block */
44 void (*rpb_restart)/* 4 physical address of restart routine */
45 __P((void));
46 long rpb_chksum;/* 4 checksum of first 31 longwords of restart */
47 long rpb_rstflg; /* 4 Restart in progress flag */
48 long rpb_haltpc; /* 4 PC at HALT/restart */
49 /* offset: 20 */
50 long rpb_haltpsl;/* 4 PSL at HALT/restart */
51 long rpb_haltcode;/* 4 reason for restart */
52 long rpb_bootr0;/* 24 Saved bootstrap parameters (R0 through R5) */
53 long rpb_bootr1;
54 long rpb_bootr2;
55 long rpb_bootr3;
56 long rpb_bootr4;
57 long rpb_bootr5;
58 long iovec; /* 4 Address of bootstrap driver */
59 long iovecsz;/* 4 Size (in bytes) of bootstrap driver */
60 /* offset: 60 */
61 long fillbn; /* 4 LBN of seconday bootstrap file */
62 long filsiz; /* 4 Size (in blocks) of seconday bootstrap file */
63 long pfnmap[2]; /* 8 Descriptor of PFN bitmap */
64 long pfncnt; /* 4 Count of physical pages */
65 /* offset: 80 */
66 long svaspt; /* 4 system virtual address of system page table */
67 long csrphy; /* 4 Physical Address of UBA device CSR */
68 long csrvir; /* 4 Virtual Address of UBA device CSR */
69 long adpphy; /* 4 Physical Address of adapter configurate reg. */
70 long adpvir; /* 4 Virtual Address of adapter configurate reg. */
71 /* offset: 100 */
72 short unit; /* 2 Bootstrap device unit number */
73 u_char devtyp; /* 1 Bootstrap device type code */
74 u_char slave; /* 1 Bootstrap device slave unit number */
75 char file[40]; /* 40 Secondary bootstrap file name */
76 u_char confreg[16]; /* 16 Byte array of adapter types */
77 /* offset: 160 */
78 #if 0
79 u_char hdrpgcnt; /* 1 Count of header pages in 2nd bootstrap image */
80 short bootndt;/* 2 Type of boot adapter */
81 u_char flags; /* 1 Miscellaneous flag bits */
82 #else
83 long align; /* if the compiler doesnt proper alignment */
84 #endif
85 long max_pfn;/* 4 Absolute highest PFN */
86 long sptep; /* 4 System space PTE prototype register */
87 long sbr; /* 4 Saved system base register */
88 long cpudbvec;/* 4 Physical address of per-CPU database vector */
89 /* offset: 180 */
90 long cca_addr; /* 4 Physical address of CCA */
91 long slr; /* 4 Saved system length register */
92 long memdesc[16]; /* 64 Longword array of memory descriptors */
93 long smp_pc; /* 4 SMP boot page physical address */
94 long wait; /* 4 Bugcheck loop code for attached processor */
95 /* offset: 260 */
96 long badpgs; /* 4 Number of bad pages found in memory scan */
97 u_char ctrlltr;/* 1 Controller letter designation */
98 u_char scbpagct; /* 1 SCB page count */
99 u_char reserved[6]; /* 6 -- */
100 long vmb_revision; /* 4 VMB revision label */
101 };
102
103 /*
104 * Bootstrap device number encoding.
105 */
106 #define BDEV_HP 0
107 #define BDEV_RK 1
108 #define BDEV_RL 2
109 #define BDEV_IDC 3
110 #define BDEV_UDA 17
111 #define BDEV_TK 18
112 #define BDEV_HSC 32
113 #define BDEV_KDB 33
114 #define BDEV_KRB 34
115 #define BDEV_NK 35
116 #define BDEV_RD 36 /* ST506/MFM disk on HDC9224 */
117 #define BDEV_ST 37 /* SCSI tape on NCR5380 */
118 #define BDEV_SD 42 /* SCSI disk on NCR5380 */
119 #define BDEV_SDN 46 /* SCSI disk on NCR5394 (VS4000) */
120 #define BDEV_CNSL 64
121 #define BDEV_QE 96
122 #define BDEV_DE 97
123 #define BDEV_NI 98
124 #define BDEV_LE 99
125 #define BDEV_ZE 100
126
127 #ifdef _KERNEL
128 extern struct rpb rpb;
129 #endif
130
131 #endif /* _VAX_RPB_H_ */
132