xref: /csrg-svn/sys/vax/include/cpu.h (revision 6943)
1*6943Ssam /*	cpu.h	4.7	82/05/26	*/
22550Swnj 
32712Swnj #ifndef LOCORE
42550Swnj /*
52550Swnj  * Cpu identification, from SID register.
62550Swnj  */
72550Swnj union cpusid {
82550Swnj 	int	cpusid;
92550Swnj 	struct cpuany {
102550Swnj 		u_int	:24,
112550Swnj 			cp_type:8;
122550Swnj 	} cpuany;
132550Swnj 	struct cpu780 {
142550Swnj 		u_int	cp_sno:12,		/* serial number */
152550Swnj 			cp_plant:3,		/* plant number */
162550Swnj 			cp_eco:9,		/* eco level */
172550Swnj 			cp_type:8;		/* VAX_780 */
182550Swnj 	} cpu780;
192550Swnj 	struct cpu750 {
202550Swnj 		u_int	cp_hrev:8,		/* hardware rev level */
212550Swnj 			cp_urev:8,		/* ucode rev level */
222550Swnj 			:8,
232550Swnj 			cp_type:8;		/* VAX_750 */
242550Swnj 	} cpu750;
25*6943Ssam 	/* need structure for 730 */
262550Swnj };
272712Swnj #endif
282550Swnj #define	VAX_780		1
292550Swnj #define	VAX_750		2
30*6943Ssam #define	VAX_730		3
312550Swnj 
323340Swnj #define	VAX_MAX		3
332550Swnj 
342712Swnj #ifndef LOCORE
352550Swnj /*
362550Swnj  * Per-cpu information for system.
372550Swnj  */
382550Swnj struct	percpu {
393245Swnj 	short	pc_cputype;		/* cpu type code */
403245Swnj 	short	pc_nnexus;		/* number of nexus slots */
413245Swnj 	struct	nexus *pc_nexbase;	/* base of nexus space */
423245Swnj /* we should be able to have just one address for the unibus memories */
433245Swnj /* and calculate successive addresses by adding to the base, but the 750 */
443245Swnj /* doesn't obey the sensible rule: uba1 has a lower address than uba0! */
453245Swnj 	caddr_t	*pc_umaddr;		/* unibus memory addresses */
463245Swnj 	short	pc_nubabdp;		/* number of bdp's per uba */
473245Swnj 	short	pc_haveubasr;		/* have uba status register */
483245Swnj /* the 750 has some slots which don't promise to tell you their types */
493245Swnj /* if this pointer is non-zero, then you get the type from this array */
503245Swnj /* rather than from the (much more sensible) low byte of the config register */
513245Swnj 	short	*pc_nextype;		/* botch */
522550Swnj };
532550Swnj 
542550Swnj #ifdef KERNEL
552550Swnj int	cpu;
563245Swnj struct	percpu percpu[];
572550Swnj #endif
582712Swnj #endif
59