BSD 4_1_snap development
[unix-history] / sys / h / cpu.h
CommitLineData
2693ab1f
C
1/* cpu.h 4.6 81/04/03 */
2
3#ifndef LOCORE
4/*
5 * Cpu identification, from SID register.
6 */
7union 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 */
38struct 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
55int cpu;
56struct percpu percpu[];
57#endif
58#endif