|
|
1.1 root 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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.