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