/* $NetBSD: rpb.h,v 1.10 2017/05/22 17:12:11 ragge Exp $ */
/*
* Copyright (c) 1995 Ludd, University of Lule}, Sweden.
* All rights reserved.
*
* This code is derived from software contributed to Ludd by Bertram Barth.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _VAX_RPB_H_
#define _VAX_RPB_H_
/*
* Look at "VAX/VMS Internals and Data Structures" around page 907
* to get more info about RPB.
*/
struct rpb { /* size description */
struct rpb *rpb_base; /* 4 physical base address of block */
void (*rpb_restart)(void);/* 4 physical address of restart routine */
long rpb_chksum;/* 4 checksum of first 31 longwords of restart */
long rpb_rstflg; /* 4 Restart in progress flag */
long rpb_haltpc; /* 4 PC at HALT/restart */
/* offset: 20 */
long rpb_haltpsl;/* 4 PSL at HALT/restart */
long rpb_haltcode;/* 4 reason for restart */
long rpb_bootr0;/* 24 Saved bootstrap parameters (R0 through R5) */
long rpb_bootr1;
long rpb_bootr2;
long rpb_bootr3;
long rpb_bootr4;
long rpb_bootr5;
long iovec; /* 4 Address of bootstrap driver */
long iovecsz;/* 4 Size (in bytes) of bootstrap driver */
/* offset: 60 */
long fillbn; /* 4 LBN of seconday bootstrap file */
long filsiz; /* 4 Size (in blocks) of seconday bootstrap file */
long pfnmap[2]; /* 8 Descriptor of PFN bitmap */
long pfncnt; /* 4 Count of physical pages */
/* offset: 80 */
long svaspt; /* 4 system virtual address of system page table */
long csrphy; /* 4 Physical Address of UBA device CSR */
long csrvir; /* 4 Virtual Address of UBA device CSR */
long adpphy; /* 4 Physical Address of adapter configurate reg. */
long adpvir; /* 4 Virtual Address of adapter configurate reg. */
/* offset: 100 */
short unit; /* 2 Bootstrap device unit number */
u_char devtyp; /* 1 Bootstrap device type code */
u_char slave; /* 1 Bootstrap device slave unit number */
char file[40]; /* 40 Secondary bootstrap file name */
u_char confreg[16]; /* 16 Byte array of adapter types */
/* offset: 160 */
#if 0
u_char hdrpgcnt; /* 1 Count of header pages in 2nd bootstrap image */
short bootndt;/* 2 Type of boot adapter */
u_char flags; /* 1 Miscellaneous flag bits */
#else
long align; /* if the compiler doesnt proper alignment */
#endif
long max_pfn;/* 4 Absolute highest PFN */
long sptep; /* 4 System space PTE prototype register */
long sbr; /* 4 Saved system base register */
long cpudbvec;/* 4 Physical address of per-CPU database vector */
/* offset: 180 */
long cca_addr; /* 4 Physical address of CCA */
long slr; /* 4 Saved system length register */
long memdesc[16]; /* 64 Longword array of memory descriptors */
long smp_pc; /* 4 SMP boot page physical address */
long wait; /* 4 Bugcheck loop code for attached processor */
/* offset: 260 */
long badpgs; /* 4 Number of bad pages found in memory scan */
u_char ctrlltr;/* 1 Controller letter designation */
u_char scbpagct; /* 1 SCB page count */
u_char reserved[6]; /* 6 -- */
long vmb_revision; /* 4 VMB revision label */
};
/*
* Bootstrap device number encoding.
*/
#define BDEV_HP 0
#define BDEV_RK 1
#define BDEV_RL 2
#define BDEV_IDC 3
#define BDEV_UDA 17
#define BDEV_TK 18
#define BDEV_HSC 32
#define BDEV_KDB 33
#define BDEV_KRB 34
#define BDEV_NK 35
#define BDEV_RD 36 /* ST506/MFM disk on HDC9224 */
#define BDEV_ST 37 /* SCSI tape on NCR5380 */
#define BDEV_SD 42 /* SCSI disk on NCR5380 */
#define BDEV_SDN 46 /* SCSI disk on NCR5394 (VS4000) */
#define BDEV_CNSL 64
#define BDEV_QE 96
#define BDEV_DE 97
#define BDEV_NI 98
#define BDEV_LE 99
#define BDEV_ZE 100
#ifdef _KERNEL
extern struct rpb rpb;
#endif
#endif /* _VAX_RPB_H_ */