xref: /original-bsd/sys/vax/include/cpu.h (revision 4b2c5e10)
1 /*	cpu.h	6.1	83/07/29	*/
2 
3 #ifndef LOCORE
4 /*
5  * Cpu identification, from SID register.
6  */
7 union cpusid {
8 	int	cpusid;
9 	struct cpuany {
10 		u_int	:24,
11 			cp_type:8;
12 	} cpuany;
13 	struct cpu780 {
14 		u_int	cp_sno:12,		/* serial number */
15 			cp_plant:3,		/* plant number */
16 			cp_eco:9,		/* eco level */
17 			cp_type:8;		/* VAX_780 */
18 	} cpu780;
19 	struct cpu750 {
20 		u_int	cp_hrev:8,		/* hardware rev level */
21 			cp_urev:8,		/* ucode rev level */
22 			:8,
23 			cp_type:8;		/* VAX_750 */
24 	} cpu750;
25 	/* need structure for 730 */
26 };
27 #endif
28 #define	VAX_780		1
29 #define	VAX_750		2
30 #define	VAX_730		3
31 
32 #define	VAX_MAX		3
33 
34 #ifndef LOCORE
35 /*
36  * Per-cpu information for system.
37  */
38 struct	percpu {
39 	short	pc_cputype;		/* cpu type code */
40 	short	pc_nnexus;		/* number of nexus slots */
41 	struct	nexus *pc_nexbase;	/* base of nexus space */
42 /* we should be able to have just one address for the unibus memories */
43 /* and calculate successive addresses by adding to the base, but the 750 */
44 /* doesn't obey the sensible rule: uba1 has a lower address than uba0! */
45 	caddr_t	*pc_umaddr;		/* unibus memory addresses */
46 	short	pc_nubabdp;		/* number of bdp's per uba */
47 	short	pc_haveubasr;		/* have uba status register */
48 /* the 750 has some slots which don't promise to tell you their types */
49 /* if this pointer is non-zero, then you get the type from this array */
50 /* rather than from the (much more sensible) low byte of the config register */
51 	short	*pc_nextype;		/* botch */
52 };
53 
54 #ifdef KERNEL
55 int	cpu;
56 struct	percpu percpu[];
57 #endif
58 #endif
59