Commit | Line | Data |
---|---|---|
da7c5cc6 KM |
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.2 (Berkeley) %G% | |
7 | */ | |
f5a2f2dd | 8 | |
adae96fc | 9 | #ifndef LOCORE |
f5a2f2dd BJ |
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 cpu780 { | |
20 | u_int cp_sno:12, /* serial number */ | |
21 | cp_plant:3, /* plant number */ | |
22 | cp_eco:9, /* eco level */ | |
23 | cp_type:8; /* VAX_780 */ | |
24 | } cpu780; | |
25 | struct cpu750 { | |
26 | u_int cp_hrev:8, /* hardware rev level */ | |
27 | cp_urev:8, /* ucode rev level */ | |
28 | :8, | |
29 | cp_type:8; /* VAX_750 */ | |
30 | } cpu750; | |
10f66600 | 31 | /* need structure for 730 */ |
f5a2f2dd | 32 | }; |
adae96fc | 33 | #endif |
f5a2f2dd BJ |
34 | #define VAX_780 1 |
35 | #define VAX_750 2 | |
10f66600 | 36 | #define VAX_730 3 |
f5a2f2dd | 37 | |
ea4d5e21 | 38 | #define VAX_MAX 3 |
f5a2f2dd | 39 | |
adae96fc | 40 | #ifndef LOCORE |
f5a2f2dd BJ |
41 | /* |
42 | * Per-cpu information for system. | |
43 | */ | |
44 | struct percpu { | |
f201ad4d BJ |
45 | short pc_cputype; /* cpu type code */ |
46 | short pc_nnexus; /* number of nexus slots */ | |
47 | struct nexus *pc_nexbase; /* base of nexus space */ | |
48 | /* we should be able to have just one address for the unibus memories */ | |
49 | /* and calculate successive addresses by adding to the base, but the 750 */ | |
50 | /* doesn't obey the sensible rule: uba1 has a lower address than uba0! */ | |
51 | caddr_t *pc_umaddr; /* unibus memory addresses */ | |
52 | short pc_nubabdp; /* number of bdp's per uba */ | |
53 | short pc_haveubasr; /* have uba status register */ | |
54 | /* the 750 has some slots which don't promise to tell you their types */ | |
55 | /* if this pointer is non-zero, then you get the type from this array */ | |
56 | /* rather than from the (much more sensible) low byte of the config register */ | |
57 | short *pc_nextype; /* botch */ | |
f5a2f2dd BJ |
58 | }; |
59 | ||
60 | #ifdef KERNEL | |
61 | int cpu; | |
f201ad4d | 62 | struct percpu percpu[]; |
f5a2f2dd | 63 | #endif |
adae96fc | 64 | #endif |