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.5 (Berkeley) 09/17/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 cpu8600 { 20 u_int cp_sno:12, /* serial number */ 21 cp_plant:4, /* plant number */ 22 cp_eco:8, /* eco level */ 23 cp_type:8; /* VAX_8600 */ 24 } cpu8600; 25 struct cpu780 { 26 u_int cp_sno:12, /* serial number */ 27 cp_plant:3, /* plant number */ 28 cp_eco:9, /* eco level */ 29 cp_type:8; /* VAX_780 */ 30 } cpu780; 31 struct cpu750 { 32 u_int cp_hrev:8, /* hardware rev level */ 33 cp_urev:8, /* ucode rev level */ 34 :8, 35 cp_type:8; /* VAX_750 */ 36 } cpu750; 37 struct cpu730 { 38 u_int :8, /* reserved */ 39 cp_urev:8, /* ucode rev level */ 40 :8, /* reserved */ 41 cp_type:8; /* VAX_730 */ 42 } cpu730; 43 }; 44 #endif 45 #define VAX_780 1 46 #define VAX_750 2 47 #define VAX_730 3 48 #define VAX_8600 4 49 50 #define VAX_MAX 4 51 52 #ifndef LOCORE 53 /* 54 * Per-cpu information for system. 55 */ 56 struct percpu { 57 short pc_cputype; /* cpu type code */ 58 short pc_cpuspeed; /* relative speed of cpu */ 59 short pc_nioa; /* number of IO adaptors/SBI's */ 60 caddr_t *pc_ioaaddr; /* phys addresses of IO adaptors */ 61 int pc_ioasize; /* size of an IO adaptor */ 62 short *pc_ioatype; /* io adaptor types if no cfg reg */ 63 }; 64 65 struct persbi { 66 short psb_nnexus; /* number of nexus slots */ 67 struct nexus *psb_nexbase; /* base of nexus space */ 68 /* we should be able to have just one address for the unibus memories */ 69 /* and calculate successive addresses by adding to the base, but the 750 */ 70 /* doesn't obey the sensible rule: uba1 has a lower address than uba0! */ 71 caddr_t *psb_umaddr; /* unibus memory addresses */ 72 short psb_nubabdp; /* number of bdp's per uba */ 73 short psb_haveubasr; /* have uba status register */ 74 /* the 750 has some slots which don't promise to tell you their types */ 75 /* if this pointer is non-zero, then you get the type from this array */ 76 /* rather than from the (much more sensible) low byte of the config register */ 77 short *psb_nextype; /* botch */ 78 }; 79 80 #ifdef KERNEL 81 int cpu; 82 struct percpu percpu[]; 83 #if VAX730 84 struct persbi xxx730; 85 #endif 86 #if VAX750 87 struct persbi cmi750; 88 #endif 89 #if VAX780 90 struct persbi sbi780; 91 #endif 92 #if VAX8600 93 struct persbi sbi8600[]; 94 #endif 95 #endif 96 #endif 97