|
|
1.1 root 1: /* cpu.h 4.6 81/04/03 */
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 7ZZ */
26: };
27: #endif
28: #define VAX_780 1
29: #define VAX_750 2
30: #define VAX_7ZZ 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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.