|
|
1.1 root 1: #ifndef LOCORE
2: /*
3: * Cpu identification, from SID register.
4: */
5: union cpusid {
6: int cpusid;
7: struct cpuany {
8: u_int :24,
9: cp_type:8;
10: } cpuany;
11: struct cpu780 {
12: u_int cp_sno:12, /* serial number */
13: cp_plant:3, /* plant number */
14: cp_eco:9, /* eco level */
15: cp_type:8; /* VAX_780 */
16: } cpu780;
17: struct cpu750 {
18: u_int cp_hrev:8, /* hardware rev level */
19: cp_urev:8, /* ucode rev level */
20: :8,
21: cp_type:8; /* VAX_750 */
22: } cpu750;
23: /* need structure for 7ZZ */
24: };
25: #endif
26: #define VAX_780 1
27: #define VAX_750 2
28: #define VAX_7ZZ 3
29:
30: #define VAX_MAX 3
31:
32: #ifndef LOCORE
33: /*
34: * Per-cpu information for system.
35: */
36: struct percpu {
37: short pc_cputype; /* cpu type code */
38: short pc_nnexus; /* number of nexus slots */
39: struct nexus *pc_nexbase; /* base of nexus space */
40: /* we should be able to have just one address for the unibus memories */
41: /* and calculate successive addresses by adding to the base, but the 750 */
42: /* doesn't obey the sensible rule: uba1 has a lower address than uba0! */
43: caddr_t *pc_umaddr; /* unibus memory addresses */
44: short pc_nubabdp; /* number of bdp's per uba */
45: short pc_haveubasr; /* have uba status register */
46: /* the 750 has some slots which don't promise to tell you their types */
47: /* if this pointer is non-zero, then you get the type from this array */
48: /* rather than from the (much more sensible) low byte of the config register */
49: short *pc_nextype; /* botch */
50: };
51:
52: #ifdef KERNEL
53: int cpu;
54: struct percpu percpu[];
55: #endif
56: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.