1: /* 2: * Copyright (c) 1982, 1986 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 7.1 (Berkeley) 6/5/86 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: struct cpu630 { 44: u_int :24, /* reserved */ 45: cp_type:8; /* VAX_630 */ 46: } cpu630; 47: }; 48: #endif 49: /* 50: * Vax CPU types. 51: * Similar types are grouped with their earliest example. 52: */ 53: #define VAX_780 1 54: #define VAX_750 2 55: #define VAX_730 3 56: #define VAX_8600 4 57: #define VAX_630 8 58: 59: #define VAX_MAX 8 60: 61: /* 62: * Main IO backplane types. 63: * This gives us a handle on how to do autoconfiguration. 64: */ 65: #define IO_SBI780 1 66: #define IO_CMI750 2 67: #define IO_XXX730 3 68: #define IO_ABUS 4 69: #define IO_QBUS 5 70: 71: #ifndef LOCORE 72: /* 73: * Per-cpu information for system. 74: */ 75: struct percpu { 76: short pc_cputype; /* cpu type code */ 77: short pc_cpuspeed; /* relative speed of cpu */ 78: short pc_nioa; /* number of IO adaptors/nexus blocks */ 79: struct iobus *pc_io; /* descriptions of IO adaptors */ 80: }; 81: 82: struct iobus { 83: int io_type; /* io adaptor types */ 84: caddr_t io_addr; /* phys address of IO adaptor */ 85: int io_size; /* size of an IO space */ 86: caddr_t io_details; /* specific to adaptor types */ 87: }; 88: 89: /* 90: * Description of a main bus that maps "nexi", ala the 780 SBI. 91: */ 92: struct nexusconnect { 93: short psb_nnexus; /* number of nexus slots */ 94: struct nexus *psb_nexbase; /* base of nexus space */ 95: /* we should be able to have just one address for the unibus memories */ 96: /* and calculate successive addresses by adding to the base, but the 750 */ 97: /* doesn't obey the sensible rule: uba1 has a lower address than uba0! */ 98: caddr_t *psb_umaddr; /* unibus memory addresses */ 99: short psb_nubabdp; /* number of bdp's per uba */ 100: short psb_haveubasr; /* have uba status register */ 101: /* the 750 has some slots which don't promise to tell you their types */ 102: /* if this pointer is non-zero, then you get the type from this array */ 103: /* rather than from the (much more sensible) low byte of the config register */ 104: short *psb_nextype; /* botch */ 105: }; 106: 107: #ifdef KERNEL 108: int cpu; 109: struct percpu percpu[]; 110: #endif 111: #endif