* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
* @(#)cpu.h 7.6 (Berkeley) %G%
* Cpu identification, from SID register.
u_int cp_sno
:12, /* serial number */
cp_plant
:4, /* plant number */
cp_eco
:8, /* eco level */
cp_type
:8; /* VAX_8600 */
u_int cp_urev
:8, /* ucode rev */
cp_secp
:1, /* secondary patch? */
cp_patch
:10, /* patch number */
cp_hrev
:4, /* hardware rev */
cp_5
:1, /* true iff KA825 */
cp_type
:8; /* VAX_8200 */
u_int cp_sno
:12, /* serial number */
cp_plant
:3, /* plant number */
cp_eco
:8, /* eco level */
cp_5
:1, /* true iff 785 */
u_int cp_hrev
:8, /* hardware rev level */
cp_urev
:8, /* ucode rev level */
cp_urev
:8, /* ucode rev level */
u_int cp_hrev
:8, /* hardware rev level */
cp_urev
:8, /* ucode rev level */
u_int cp_urev
:8, /* ucode rev level */
* Similar types are grouped with their earliest example.
#define VAX_8500 6 /* same as 8800, 8700 */
#define VAX_610 7 /* uVAX I */
#define VAX_630 8 /* uVAX II */
#define VAX_650 10 /* uVAX 3000 */
* Main IO backplane types.
* This gives us a handle on how to do autoconfiguration.
* CPU-dependent operations.
int (*clkstartrt
)(); /* start real time clock */
int (*clkread
)(); /* set system time from clock */
int (*clkwrite
)(); /* reset clock from system time */
struct clockops
*cpu_clock
; /* clock operations */
int (*cpu_memenable
)(); /* memory error (CRD intr) enable */
int (*cpu_memerr
)(); /* memory error handler */
int (*cpu_mchk
)(); /* machine check handler */
int (*cpu_init
)(); /* special initialisation, if any */
/* return values from cpu_mchk */
* Per-cpu information for system.
short pc_cputype
; /* cpu type code */
short pc_cpuspeed
; /* relative speed of cpu */
short pc_nioa
; /* number of IO adaptors/nexus blocks */
struct iobus
*pc_io
; /* descriptions of IO adaptors */
struct cpuops
*pc_ops
; /* per-cpu operations */
* Generic description of an I/O "adaptor"
* (any top-level I/O bus visible to software
* and requiring autoconfiguration).
* The remainder of the description
* is pointed to by io_details.
int io_type
; /* io adaptor types */
caddr_t io_addr
; /* phys address of IO adaptor */
int io_size
; /* size of an IO space */
caddr_t io_details
; /* specific to adaptor types */
* Description of a main bus that maps "nexi", ala the 780 SBI.
short psb_nnexus
; /* number of nexus slots */
struct nexus
*psb_nexbase
; /* base of nexus space */
short psb_ubatype
; /* type of "unibus adaptor" */
short psb_nubabdp
; /* number of bdp's per uba */
caddr_t
*psb_umaddr
; /* unibus memory addresses */
/* the 750 has some slots which don't promise to tell you their types */
/* if this pointer is non-zero, then you get the type from this array */
/* rather than from the (much more sensible) low byte of the config register */
short *psb_nextype
; /* botch */
* Description of a BI bus configuration.
struct bi_node
*pbi_base
; /* base of node space */
/* that cannot possibly be all! */
* Description of a Q-bus configuration.
int qb_type
; /* type of "unibus adaptor" */
int qb_memsize
; /* size of (used) memory, pages */
struct pte
*qb_map
; /* base of map registers */
caddr_t qb_maddr
; /* "unibus" memory address */
caddr_t qb_iopage
; /* "unibus" IO page address */
int mastercpu
; /* if multiple cpus, this identifies master */
* Enable realtime clock (always enabled).