File: /usr/src/linux/include/asm-alpha/hwrpb.h

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