add support for 8600
[unix-history] / usr / src / sys / vax / include / cpu.h
... / ...
CommitLineData
1/*
2 * Copyright (c) 1982 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 6.4 (Berkeley) %G%
7 */
8
9#ifndef LOCORE
10/*
11 * Cpu identification, from SID register.
12 */
13union 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};
44#endif
45#define VAX_780 1
46#define VAX_750 2
47#define VAX_730 3
48#define VAX_8600 4
49
50#define VAX_MAX 4
51
52#ifndef LOCORE
53/*
54 * Per-cpu information for system.
55 */
56struct percpu {
57 short pc_cputype; /* cpu type code */
58 short pc_nioa; /* number of IO adaptors/SBI's */
59 caddr_t *pc_ioaaddr; /* phys addresses of IO adaptors */
60 int pc_ioasize; /* size of a IO adaptor */
61 short *pc_ioatype; /* io adaptor types if no cfg reg */
62};
63
64struct persbi {
65 short psb_nnexus; /* number of nexus slots */
66 struct nexus *psb_nexbase; /* base of nexus space */
67/* we should be able to have just one address for the unibus memories */
68/* and calculate successive addresses by adding to the base, but the 750 */
69/* doesn't obey the sensible rule: uba1 has a lower address than uba0! */
70 caddr_t *psb_umaddr; /* unibus memory addresses */
71 short psb_nubabdp; /* number of bdp's per uba */
72 short psb_haveubasr; /* have uba status register */
73/* the 750 has some slots which don't promise to tell you their types */
74/* if this pointer is non-zero, then you get the type from this array */
75/* rather than from the (much more sensible) low byte of the config register */
76 short *psb_nextype; /* botch */
77};
78
79#ifdef KERNEL
80int cpu;
81struct percpu percpu[];
82#if VAX730
83struct persbi xxx730;
84#endif
85#if VAX750
86struct persbi cmi750;
87#endif
88#if VAX780
89struct persbi sbi780;
90#endif
91#if VAX8600
92struct persbi sbi8600[];
93#endif
94#endif
95#endif