|
|
1.1 root 1: /* Layout and contents of the HardWare Resource Parameter Block (HWRPB).
2:
3: This file is copied intact from the Linux kernel. As such, it is
4: covered by the GNU General Public License, v2.0.
5:
6: You should have received a copy of the GNU General Public License
7: along with this program; see the file COPYING. If not see
8: <http://www.gnu.org/licenses/>. */
9:
10: #ifndef __ALPHA_HWRPB_H
11: #define __ALPHA_HWRPB_H
12:
13: #define INIT_HWRPB ((struct hwrpb_struct *) 0x10000000)
14:
15: /*
16: * DEC processor types for Alpha systems. Found in HWRPB.
17: * These values are architected.
18: */
19:
20: #define EV3_CPU 1 /* EV3 */
21: #define EV4_CPU 2 /* EV4 (21064) */
22: #define LCA4_CPU 4 /* LCA4 (21066/21068) */
23: #define EV5_CPU 5 /* EV5 (21164) */
24: #define EV45_CPU 6 /* EV4.5 (21064/xxx) */
25: #define EV56_CPU 7 /* EV5.6 (21164) */
26: #define EV6_CPU 8 /* EV6 (21264) */
27: #define PCA56_CPU 9 /* PCA56 (21164PC) */
28: #define PCA57_CPU 10 /* PCA57 (notyet) */
29: #define EV67_CPU 11 /* EV67 (21264A) */
30: #define EV68CB_CPU 12 /* EV68CB (21264C) */
31: #define EV68AL_CPU 13 /* EV68AL (21264B) */
32: #define EV68CX_CPU 14 /* EV68CX (21264D) */
33: #define EV7_CPU 15 /* EV7 (21364) */
34: #define EV79_CPU 16 /* EV79 (21364??) */
35: #define EV69_CPU 17 /* EV69 (21264/EV69A) */
36:
37: /*
38: * DEC system types for Alpha systems. Found in HWRPB.
39: * These values are architected.
40: */
41:
42: #define ST_ADU 1 /* Alpha ADU systype */
43: #define ST_DEC_4000 2 /* Cobra systype */
44: #define ST_DEC_7000 3 /* Ruby systype */
45: #define ST_DEC_3000_500 4 /* Flamingo systype */
46: #define ST_DEC_2000_300 6 /* Jensen systype */
47: #define ST_DEC_3000_300 7 /* Pelican systype */
48: #define ST_DEC_2100_A500 9 /* Sable systype */
49: #define ST_DEC_AXPVME_64 10 /* AXPvme system type */
50: #define ST_DEC_AXPPCI_33 11 /* NoName system type */
51: #define ST_DEC_TLASER 12 /* Turbolaser systype */
52: #define ST_DEC_2100_A50 13 /* Avanti systype */
53: #define ST_DEC_MUSTANG 14 /* Mustang systype */
54: #define ST_DEC_ALCOR 15 /* Alcor (EV5) systype */
55: #define ST_DEC_1000 17 /* Mikasa systype */
56: #define ST_DEC_EB64 18 /* EB64 systype */
57: #define ST_DEC_EB66 19 /* EB66 systype */
58: #define ST_DEC_EB64P 20 /* EB64+ systype */
59: #define ST_DEC_BURNS 21 /* laptop systype */
60: #define ST_DEC_RAWHIDE 22 /* Rawhide systype */
61: #define ST_DEC_K2 23 /* K2 systype */
62: #define ST_DEC_LYNX 24 /* Lynx systype */
63: #define ST_DEC_XL 25 /* Alpha XL systype */
64: #define ST_DEC_EB164 26 /* EB164 systype */
65: #define ST_DEC_NORITAKE 27 /* Noritake systype */
66: #define ST_DEC_CORTEX 28 /* Cortex systype */
67: #define ST_DEC_MIATA 30 /* Miata systype */
68: #define ST_DEC_XXM 31 /* XXM systype */
69: #define ST_DEC_TAKARA 32 /* Takara systype */
70: #define ST_DEC_YUKON 33 /* Yukon systype */
71: #define ST_DEC_TSUNAMI 34 /* Tsunami systype */
72: #define ST_DEC_WILDFIRE 35 /* Wildfire systype */
73: #define ST_DEC_CUSCO 36 /* CUSCO systype */
74: #define ST_DEC_EIGER 37 /* Eiger systype */
75: #define ST_DEC_TITAN 38 /* Titan systype */
76: #define ST_DEC_MARVEL 39 /* Marvel systype */
77:
78: /* UNOFFICIAL!!! */
79: #define ST_UNOFFICIAL_BIAS 100
80: #define ST_DTI_RUFFIAN 101 /* RUFFIAN systype */
81:
82: /* Alpha Processor, Inc. systems */
83: #define ST_API_BIAS 200
84: #define ST_API_NAUTILUS 201 /* UP1000 systype */
85:
86: struct pcb_struct {
87: unsigned long ksp;
88: unsigned long usp;
89: unsigned long ptbr;
90: unsigned int pcc;
91: unsigned int asn;
92: unsigned long unique;
93: unsigned long flags;
94: unsigned long res1, res2;
95: };
96:
97: struct percpu_struct {
98: unsigned long hwpcb[16];
99: unsigned long flags;
100: unsigned long pal_mem_size;
101: unsigned long pal_scratch_size;
102: unsigned long pal_mem_pa;
103: unsigned long pal_scratch_pa;
104: unsigned long pal_revision;
105: unsigned long type;
106: unsigned long variation;
107: unsigned long revision;
108: unsigned long serial_no[2];
109: unsigned long logout_area_pa;
110: unsigned long logout_area_len;
111: unsigned long halt_PCBB;
112: unsigned long halt_PC;
113: unsigned long halt_PS;
114: unsigned long halt_arg;
115: unsigned long halt_ra;
116: unsigned long halt_pv;
117: unsigned long halt_reason;
118: unsigned long res;
119: unsigned long ipc_buffer[21];
120: unsigned long palcode_avail[16];
121: unsigned long compatibility;
122: unsigned long console_data_log_pa;
123: unsigned long console_data_log_length;
124: unsigned long bcache_info;
125: };
126:
127: struct procdesc_struct {
128: unsigned long weird_vms_stuff;
129: unsigned long address;
130: };
131:
132: struct vf_map_struct {
133: void *va;
134: unsigned long pa;
135: unsigned long count;
136: };
137:
138: struct crb_struct {
139: struct procdesc_struct * dispatch_va;
140: unsigned long dispatch_pa;
141: struct procdesc_struct * fixup_va;
142: unsigned long fixup_pa;
143: /* virtual->physical map */
144: unsigned long map_entries;
145: unsigned long map_pages;
146: struct vf_map_struct map[1];
147: };
148:
149: struct memclust_struct {
150: unsigned long start_pfn;
151: unsigned long numpages;
152: unsigned long numtested;
153: unsigned long bitmap_va;
154: unsigned long bitmap_pa;
155: unsigned long bitmap_chksum;
156: unsigned long usage;
157: };
158:
159: struct memdesc_struct {
160: unsigned long chksum;
161: unsigned long optional_pa;
162: unsigned long numclusters;
163: struct memclust_struct cluster[0];
164: };
165:
166: struct dsr_struct {
167: long smm; /* SMM nubber used by LMF */
168: unsigned long lurt_off; /* offset to LURT table */
169: unsigned long sysname_off; /* offset to sysname char count */
170: };
171:
172: struct hwrpb_struct {
173: unsigned long phys_addr; /* check: physical address of the hwrpb */
174: unsigned long id; /* check: "HWRPB\0\0\0" */
175: unsigned long revision;
176: unsigned long size; /* size of hwrpb */
177: unsigned long cpuid;
178: unsigned long pagesize; /* 8192, I hope */
179: unsigned long pa_bits; /* number of physical address bits */
180: unsigned long max_asn;
181: unsigned char ssn[16]; /* system serial number: big bother is watching */
182: unsigned long sys_type;
183: unsigned long sys_variation;
184: unsigned long sys_revision;
185: unsigned long intr_freq; /* interval clock frequency * 4096 */
186: unsigned long cycle_freq; /* cycle counter frequency */
187: unsigned long vptb; /* Virtual Page Table Base address */
188: unsigned long res1;
189: unsigned long tbhb_offset; /* Translation Buffer Hint Block */
190: unsigned long nr_processors;
191: unsigned long processor_size;
192: unsigned long processor_offset;
193: unsigned long ctb_nr;
194: unsigned long ctb_size; /* console terminal block size */
195: unsigned long ctbt_offset; /* console terminal block table offset */
196: unsigned long crb_offset; /* console callback routine block */
197: unsigned long mddt_offset; /* memory data descriptor table */
198: unsigned long cdb_offset; /* configuration data block (or NULL) */
199: unsigned long frut_offset; /* FRU table (or NULL) */
200: void (*save_terminal)(unsigned long);
201: unsigned long save_terminal_data;
202: void (*restore_terminal)(unsigned long);
203: unsigned long restore_terminal_data;
204: void (*CPU_restart)(unsigned long);
205: unsigned long CPU_restart_data;
206: unsigned long res2;
207: unsigned long res3;
208: unsigned long chksum;
209: unsigned long rxrdy;
210: unsigned long txrdy;
211: unsigned long dsr_offset; /* "Dynamic System Recognition Data Block Table" */
212: };
213:
214:
215: static inline void
216: hwrpb_update_checksum(struct hwrpb_struct *h)
217: {
218: unsigned long sum = 0, *l;
219: for (l = (unsigned long *) h; l < (unsigned long *) &h->chksum; ++l)
220: sum += *l;
221: h->chksum = sum;
222: }
223:
224: #endif /* __ALPHA_HWRPB_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.