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