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