rpb.h revision 8013
112853Sgabeblack@google.com/*
212853Sgabeblack@google.com * Copyright 1990 Hewlett-Packard Development Company, L.P.
312853Sgabeblack@google.com *
412853Sgabeblack@google.com * Permission is hereby granted, free of charge, to any person
512853Sgabeblack@google.com * obtaining a copy of this software and associated documentation
612853Sgabeblack@google.com * files (the "Software"), to deal in the Software without
712853Sgabeblack@google.com * restriction, including without limitation the rights to use, copy,
812853Sgabeblack@google.com * modify, merge, publish, distribute, sublicense, and/or sell copies
912853Sgabeblack@google.com * of the Software, and to permit persons to whom the Software is
1012853Sgabeblack@google.com * furnished to do so, subject to the following conditions:
1112853Sgabeblack@google.com *
1212853Sgabeblack@google.com * The above copyright notice and this permission notice shall be
1312853Sgabeblack@google.com * included in all copies or substantial portions of the Software.
1412853Sgabeblack@google.com *
1512853Sgabeblack@google.com * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1612853Sgabeblack@google.com * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1712853Sgabeblack@google.com * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1812853Sgabeblack@google.com * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
1912853Sgabeblack@google.com * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
2012853Sgabeblack@google.com * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
2112853Sgabeblack@google.com * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2212853Sgabeblack@google.com * SOFTWARE.
2312853Sgabeblack@google.com */
2412853Sgabeblack@google.com
2512853Sgabeblack@google.com/*
2612853Sgabeblack@google.com * Defines for the architected startup addresses.
2712853Sgabeblack@google.com */
2812853Sgabeblack@google.com#define HWRPB_ADDR	0x10000000	/* 256 MB */
2912853Sgabeblack@google.com#define BOOT_ADDR	0x20000000	/* 512 MB */
3012853Sgabeblack@google.com#define PGTBL_ADDR	0x40000000	/*   1 GB */
3112853Sgabeblack@google.com
3212853Sgabeblack@google.com/*
3312853Sgabeblack@google.com * Values for the "haltcode" field in the per-cpu portion of the HWRPB
3412853Sgabeblack@google.com *
3512853Sgabeblack@google.com * Bit defines for the "sysvar" field in the HWRPB.
3612853Sgabeblack@google.com * Each platform has different values for SYSBOARD and IOBOARD bits.
3712853Sgabeblack@google.com */
3812853Sgabeblack@google.com#define HALT_PWRUP	0		/* power up */
3912853Sgabeblack@google.com#define HALT_OPR	1		/* operator issued halt cmd */
4012853Sgabeblack@google.com#define HALT_KSTK	2		/* kernel stack not valid */
4112853Sgabeblack@google.com#define HALT_SCBB	3		/* invalid SCBB */
4212853Sgabeblack@google.com#define HALT_PTBR	4		/* invalid PTBR */
4312853Sgabeblack@google.com#define HALT_EXE	5		/* kernel executed halt instruction */
4412853Sgabeblack@google.com#define HALT_DBLE	6		/* double error abort */
4512853Sgabeblack@google.com
4612853Sgabeblack@google.com/*
4712853Sgabeblack@google.com * Bit defines for the "state" field in the per-cpu portion of the HWRPB
4812853Sgabeblack@google.com */
4912853Sgabeblack@google.com#define STATE_BIP	0x00000001	/* bootstrap in progress */
5012853Sgabeblack@google.com#define STATE_RC	0x00000002	/* restart capable */
5112853Sgabeblack@google.com#define STATE_PA	0x00000004	/* processor available to OS */
5212853Sgabeblack@google.com#define STATE_PP	0x00000008	/* processor present */
5312853Sgabeblack@google.com#define STATE_OH	0x00000010	/* operator halted */
5412853Sgabeblack@google.com#define STATE_CV	0x00000020	/* context valid */
5512853Sgabeblack@google.com#define STATE_PV	0x00000040	/* PALcode valid */
5612853Sgabeblack@google.com#define STATE_PMV	0x00000080	/* PALcode memory valid */
5712853Sgabeblack@google.com#define STATE_PL	0x00000100	/* PALcode loaded */
5812853Sgabeblack@google.com#define STATE_HALT_MASK	0x00ff0000	/* Mask for Halt Requested field */
5912853Sgabeblack@google.com#define STATE_DEFAULT	0x00000000	/* Default (no specific action) */
6012853Sgabeblack@google.com#define STATE_SVRS_TERM	0x00010000	/* SAVE_TERM/RESTORE_TERM Exit */
6112853Sgabeblack@google.com#define STATE_COLD_BOOT	0x00020000	/* Cold Bootstrap Requested */
6212853Sgabeblack@google.com#define STATE_WARM_BOOT	0x00030000	/* Warm Bootstrap Requested */
6312853Sgabeblack@google.com#define STATE_HALT	0x00040000	/* Remain halted (no restart) */
6412853Sgabeblack@google.com
6512853Sgabeblack@google.com
6612853Sgabeblack@google.com#define SV_PF_RSVD	0x00000000	/* RESERVED */
6712853Sgabeblack@google.com#define SV_RESERVED	0x00000000	/* All STS bits; 0 for back compat */
6812853Sgabeblack@google.com#define SV_MPCAP	0x00000001	/* MP capable */
6912853Sgabeblack@google.com#define SV_PF_UNITED	0x00000020	/* United */
7012853Sgabeblack@google.com#define SV_PF_SEPARATE	0x00000040	/* Separate */
7112853Sgabeblack@google.com#define SV_PF_FULLBB	0x00000060	/* Full battery backup */
7212853Sgabeblack@google.com#define SV_POWERFAIL	0x000000e0	/* Powerfail implementation */
7312853Sgabeblack@google.com#define SV_PF_RESTART	0x00000100	/* Powerfail restart */
7412853Sgabeblack@google.com
7512853Sgabeblack@google.com#define SV_GRAPHICS	0x00000200	/* Embedded graphics processor */
7612853Sgabeblack@google.com
7712853Sgabeblack@google.com#define SV_STS_MASK	0x0000fc00	/* STS bits - system and I/O board */
7812853Sgabeblack@google.com#define SV_SANDPIPER	0x00000400	/* others define system platforms */
7912853Sgabeblack@google.com#define SV_FLAMINGO	0x00000800	/* STS BIT SETTINGS */
8012853Sgabeblack@google.com#define SV_HOTPINK	0x00000c00	/* STS BIT SETTINGS */
8112853Sgabeblack@google.com#define SV_FLAMINGOPLUS	0x00001000	/* STS BIT SETTINGS */
8212853Sgabeblack@google.com#define SV_ULTRA	0x00001400	/* STS BIT SETTINGS */
8312853Sgabeblack@google.com#define SV_SANDPLUS	0x00001800	/* STS BIT SETTINGS */
8412853Sgabeblack@google.com#define SV_SANDPIPER45	0x00001c00	/* STS BIT SETTINGS */
8512853Sgabeblack@google.com#define SV_FLAMINGO45	0x00002000	/* STS BIT SETTINGS */
8612853Sgabeblack@google.com
8712853Sgabeblack@google.com#define SV_SABLE	0x00000400	/* STS BIT SETTINGS */
8812853Sgabeblack@google.com
8912853Sgabeblack@google.com#define SV_KN20AA	0x00000400	/* STS BIT SETTINGS */
9012853Sgabeblack@google.com
9112853Sgabeblack@google.com/*
9212853Sgabeblack@google.com * Values for the "console type" field in the CTB portion of the HWRPB
9312853Sgabeblack@google.com */
9412853Sgabeblack@google.com#define CONS_NONE	0		/* no console present */
9512853Sgabeblack@google.com#define CONS_SRVC	1		/* console is service processor */
9612853Sgabeblack@google.com#define CONS_DZ		2		/* console is dz/dl VT device */
9712853Sgabeblack@google.com#define CONS_GRPH	3		/* cons is gfx dev w/ dz/dl keybd*/
9812853Sgabeblack@google.com#define CONS_REM	4		/* cons is remote, protocal enet/MOP */
9912853Sgabeblack@google.com
10012853Sgabeblack@google.com/*
10112853Sgabeblack@google.com * PALcode variants that we're interested in.
10212853Sgabeblack@google.com * Used as indices into the "palrev_avail" array in the per-cpu portion
10312853Sgabeblack@google.com * of the HWRPB.
10412853Sgabeblack@google.com */
10512853Sgabeblack@google.com#define PALvar_reserved	0
10612853Sgabeblack@google.com#define PALvar_OpenVMS	1
10712853Sgabeblack@google.com#define PALvar_OSF1	2
10812853Sgabeblack@google.com
10912853Sgabeblack@google.com/*
11012853Sgabeblack@google.com * The Alpha restart parameter block, which is a page or 2 in low memory
11112853Sgabeblack@google.com */
11212853Sgabeblack@google.comstruct rpb {
11312853Sgabeblack@google.com    struct rpb *rpb_selfref;	/* 000: physical self-reference */
11412853Sgabeblack@google.com    long  rpb_string;		/* 008: contains string "HWRPB" */
11512853Sgabeblack@google.com    long  rpb_vers;		/* 010: HWRPB version number */
11612853Sgabeblack@google.com    ulong rpb_size;		/* 018: bytes in RPB perCPU CTB CRB MEMDSC */
11712853Sgabeblack@google.com    ulong rpb_cpuid;		/* 020: primary cpu id */
11812853Sgabeblack@google.com    ulong rpb_pagesize;		/* 028: page size in bytes */
11912853Sgabeblack@google.com    ulong rpb_addrbits;		/* 030: number of phys addr bits */
12012853Sgabeblack@google.com    ulong rpb_maxasn;		/* 038: max valid ASN */
12112853Sgabeblack@google.com    char  rpb_ssn[16];		/* 040: system serial num: 10 ascii chars */
12212853Sgabeblack@google.com    ulong grpb_systype;		/* 050: system type */
12312853Sgabeblack@google.com    long  rpb_sysvar;		/* 058: system variation */
12412853Sgabeblack@google.com    long  rpb_sysrev;		/* 060: system revision */
12512853Sgabeblack@google.com    ulong rpb_clock;		/* 068: scaled interval clock intr freq */
12612853Sgabeblack@google.com    ulong rpb_counter;		/* 070: cycle counter frequency */
12712853Sgabeblack@google.com    ulong rpb_vptb;		/* 078: virtual page table base */
12812853Sgabeblack@google.com    long  rpb_res1;		/* 080: reserved */
12912853Sgabeblack@google.com    ulong rpb_trans_off;	/* 088: offset to translation buffer hint */
13012853Sgabeblack@google.com    ulong rpb_numprocs;		/* 090: number of processor slots */
13112853Sgabeblack@google.com    ulong rpb_slotsize;		/* 098: per-cpu slot size */
13212853Sgabeblack@google.com    ulong rpb_percpu_off;	/* 0A0: offset to per_cpu slots */
13312853Sgabeblack@google.com    ulong rpb_num_ctb;		/* 0A8: number of CTBs */
13412853Sgabeblack@google.com    ulong rpb_ctb_size;		/* 0B0: bytes in largest CTB */
13512853Sgabeblack@google.com    ulong rpb_ctb_off;		/* 0B8: offset to CTB (cons term block) */
13612853Sgabeblack@google.com    ulong rpb_crb_off;		/* 0C0: offset to CRB (cons routine block) */
13712853Sgabeblack@google.com    ulong rpb_mdt_off;		/* 0C8: offset to memory descriptor table */
13812853Sgabeblack@google.com    ulong rpb_config_off;	/* 0D0: offset to config data block */
13912853Sgabeblack@google.com    ulong rpb_fru_off;		/* 0D8: offset to FRU table */
14012853Sgabeblack@google.com    void  (*rpb_saveterm)();	/* 0E0: virt addr of save term routine */
14112853Sgabeblack@google.com    long  rpb_saveterm_pv;	/* 0E8: proc value for save term routine */
14212853Sgabeblack@google.com    void  (*rpb_rstrterm)();	/* 0F0: virt addr of restore term routine */
14312853Sgabeblack@google.com    long  rpb_rstrterm_pv;	/* 0F8: proc value for restore term routine */
14412853Sgabeblack@google.com    void  (*rpb_restart)();	/* 100: virt addr of CPU restart routine */
14512853Sgabeblack@google.com    long  rpb_restart_pv;	/* 108: proc value for CPU restart routine */
14612853Sgabeblack@google.com    long  rpb_software;		/* 110: used to determine presence of kdebug */
14712853Sgabeblack@google.com    long  rpb_hardware;		/* 118: reserved for hardware */
14812853Sgabeblack@google.com    long  rpb_checksum;		/* 120: checksum of prior entries in rpb */
14912853Sgabeblack@google.com    long  rpb_rxrdy;		/* 128: receive ready bitmask */
15012853Sgabeblack@google.com    long  rpb_txrdy;		/* 130: transmit ready bitmask */
15112853Sgabeblack@google.com    ulong rpb_dsr_off;		/* 138: Dynamic System Recog. offset */
15212853Sgabeblack@google.com};
15312853Sgabeblack@google.com
15412853Sgabeblack@google.com#define rpb_kdebug rpb_software
15512853Sgabeblack@google.com
15612853Sgabeblack@google.com#define OSF_HWRPB_ADDR	((vm_offset_t)(-1L << 23))
15712853Sgabeblack@google.com
15812853Sgabeblack@google.com/*
15912853Sgabeblack@google.com * This is the format for the boot/restart HWPCB.  It must match the
16012853Sgabeblack@google.com * initial fields of the pcb structure as defined in pcb.h, but must
16112853Sgabeblack@google.com * additionally contain the appropriate amount of padding to line up
16212853Sgabeblack@google.com * with formats used by other palcode types.
16312853Sgabeblack@google.com */
16412853Sgabeblack@google.comstruct bootpcb {
16512853Sgabeblack@google.com    long rpb_ksp;		/* 000: kernel stack pointer */
16612853Sgabeblack@google.com    long rpb_usp;		/* 008: user stack pointer */
16712853Sgabeblack@google.com    long rpb_ptbr;		/* 010: page table base register */
16812853Sgabeblack@google.com    int  rpb_cc;		/* 018: cycle counter */
16912853Sgabeblack@google.com    int  rpb_asn;		/* 01C: address space number */
17012853Sgabeblack@google.com    long rpb_proc_uniq;		/* 020: proc/thread unique value */
17112853Sgabeblack@google.com    long rpb_fen;		/* 028: floating point enable */
17212853Sgabeblack@google.com    long rpb_palscr[2];		/* 030: pal scratch area */
17312853Sgabeblack@google.com    long rpb_pcbpad[8];		/* 040: padding for fixed size */
17412853Sgabeblack@google.com};
17512853Sgabeblack@google.com
17612853Sgabeblack@google.com/*
17712853Sgabeblack@google.com * Inter-Console Communications Buffer
17812853Sgabeblack@google.com * Used for the primary processor to communcate with the console
17912853Sgabeblack@google.com * of secondary processors.
18012853Sgabeblack@google.com */
18112853Sgabeblack@google.comstruct iccb {
18212853Sgabeblack@google.com    uint iccb_rxlen;		/* receive length in bytes      */
18312853Sgabeblack@google.com    uint iccb_txlen;		/* transmit length in bytes     */
18412853Sgabeblack@google.com    char iccb_rxbuf[80];	/* receive buffer               */
18512853Sgabeblack@google.com    char iccb_txbuf[80];	/* transmit buffer              */
18612853Sgabeblack@google.com};
18712853Sgabeblack@google.com
18812853Sgabeblack@google.com/*
18912853Sgabeblack@google.com * The per-cpu portion of the Alpha HWRPB.
19012853Sgabeblack@google.com * Note that the main portion of the HWRPB is of variable size,
19112853Sgabeblack@google.com * hence this must be a separate structure.
19212853Sgabeblack@google.com *
19312853Sgabeblack@google.com */
19412853Sgabeblack@google.comstruct rpb_percpu {
19512853Sgabeblack@google.com    struct bootpcb rpb_pcb;	/* 000: boot/restart HWPCB */
19612853Sgabeblack@google.com    long rpb_state;		/* 080: per-cpu state bits */
19712853Sgabeblack@google.com    long rpb_palmem;		/* 088: palcode memory length */
19812853Sgabeblack@google.com    long rpb_palscratch;	/* 090: palcode scratch length */
19912853Sgabeblack@google.com    long rpb_palmem_addr;	/* 098: phys addr of palcode mem space */
20012853Sgabeblack@google.com    long rpb_palscratch_addr;	/* 0A0: phys addr of palcode scratch space */
20112853Sgabeblack@google.com    long rpb_palrev;		/* 0A8: PALcode rev required */
20212853Sgabeblack@google.com    long rpb_proctype;		/* 0B0: processor type */
20312853Sgabeblack@google.com    long rpb_procvar;		/* 0B8: processor variation */
20412853Sgabeblack@google.com    long rpb_procrev;		/* 0C0: processor revision */
20512853Sgabeblack@google.com    char rpb_procsn[16];	/* 0C8: proc serial num: 10 ascii chars */
20612853Sgabeblack@google.com    long rpb_logout;		/* 0D8: phys addr of logout area */
20712853Sgabeblack@google.com    long rpb_logout_len;	/* 0E0: length in bytes of logout area */
20812853Sgabeblack@google.com    long rpb_haltpb;		/* 0E8: halt pcb base */
20912853Sgabeblack@google.com    long rpb_haltpc;		/* 0F0: halt pc */
21012853Sgabeblack@google.com    long rpb_haltps;		/* 0F8: halt ps */
21112853Sgabeblack@google.com    long rpb_haltal;		/* 100: halt arg list (R25) */
21212853Sgabeblack@google.com    long rpb_haltra;		/* 108: halt return address (R26) */
21312853Sgabeblack@google.com    long rpb_haltpv;		/* 110: halt procedure value (R27) */
21412853Sgabeblack@google.com    long rpb_haltcode;		/* 118: reason for halt */
21512853Sgabeblack@google.com    long rpb_software;		/* 120: for software */
21612853Sgabeblack@google.com    struct iccb	rpb_iccb;       /* 128: inter-console communications buffer */
21712853Sgabeblack@google.com    long rpb_palrev_avail[16];	/* 1D0: PALcode revs available */
21812853Sgabeblack@google.com    long rpb_pcrsvd[6];		/* 250: reserved for arch use */
21912853Sgabeblack@google.com/* the dump stack grows from the end of the rpb page not to reach here */
22012853Sgabeblack@google.com};
22112853Sgabeblack@google.com
22212853Sgabeblack@google.com/* The firmware revision is in the (unused) first entry of palrevs available */
22312853Sgabeblack@google.com#define rpb_firmrev rpb_palrev_avail[0]
22412853Sgabeblack@google.com
22512853Sgabeblack@google.com/*
22612853Sgabeblack@google.com * The memory cluster descriptor.
22712853Sgabeblack@google.com */
22812853Sgabeblack@google.comstruct rpb_cluster {
22912853Sgabeblack@google.com    long rpb_pfn;		/* 000: starting PFN of this cluster */
23012853Sgabeblack@google.com    long rpb_pfncount;		/* 008: count of PFNs in this cluster */
23112853Sgabeblack@google.com    long rpb_pfntested;		/* 010: count of tested PFNs in cluster */
23212853Sgabeblack@google.com    long rpb_va;		/* 018: va of bitmap */
23312853Sgabeblack@google.com    long rpb_pa;		/* 020: pa of bitmap */
23412853Sgabeblack@google.com    long rpb_checksum;		/* 028: checksum of bitmap */
23512853Sgabeblack@google.com    long rpb_usage;		/* 030: usage of cluster */
23612853Sgabeblack@google.com};
23712853Sgabeblack@google.com#define CLUSTER_USAGE_OS	((long)0)
23812853Sgabeblack@google.com#define CLUSTER_USAGE_PAL	((long)1)
23912853Sgabeblack@google.com#define CLUSTER_USAGE_NVRAM	((long)2)
24012853Sgabeblack@google.com
24112853Sgabeblack@google.com/*
24212853Sgabeblack@google.com * The "memory descriptor table" portion of the HWRPB.
24312853Sgabeblack@google.com * Note that the main portion of the HWRPB is of variable size and there is a
24412853Sgabeblack@google.com * variable number of per-cpu slots, hence this must be a separate structure.
24512853Sgabeblack@google.com * Also note that the memory descriptor table contains a fixed portion plus
24612853Sgabeblack@google.com * a variable number of "memory cluster descriptors" (one for each "cluster"
24712853Sgabeblack@google.com * of memory).
24812853Sgabeblack@google.com */
24912853Sgabeblack@google.comstruct rpb_mdt {
25012853Sgabeblack@google.com    long rpb_checksum;		/* 000: checksum of entire mem desc table */
25112853Sgabeblack@google.com    long rpb_impaddr;		/* 008: PA of implementation dep info */
25212853Sgabeblack@google.com    long rpb_numcl;		/* 010: number of clusters */
25312853Sgabeblack@google.com    struct rpb_cluster rpb_cluster[1];	/* first instance of a cluster */
25412853Sgabeblack@google.com};
25512853Sgabeblack@google.com
25612853Sgabeblack@google.com/*
25712853Sgabeblack@google.com * The "Console Terminal Block" portion of the HWRPB, for serial line
25812853Sgabeblack@google.com * UART console device.
25912853Sgabeblack@google.com */
26012853Sgabeblack@google.comstruct ctb_tt {
26112853Sgabeblack@google.com    long ctb_type;		/* 000: console type */
26212853Sgabeblack@google.com    long ctb_unit;		/* 008: console unit */
26312853Sgabeblack@google.com    long ctb_resv;		/* 010: reserved */
26412853Sgabeblack@google.com    long ctb_length;		/* 018: byte length of device dep portion */
26512853Sgabeblack@google.com    long ctb_csr;		/* 020: CSR Address */
26612853Sgabeblack@google.com    long ctb_tivec;		/* 028: <63>=tie; interrupt vector */
26712853Sgabeblack@google.com    long ctb_rivec;		/* 030: <63>=rie; interrupt vector */
26812853Sgabeblack@google.com    long ctb_baud;		/* 038: baud rate */
26912853Sgabeblack@google.com    long ctb_put_sts;		/* 040: PUTS callback extended status */
27012853Sgabeblack@google.com    long ctb_get_sts;		/* 048: GETS callback extended status */
27112853Sgabeblack@google.com    long ctb_rsvd[1];		/* 050: reserved for console use */
27212853Sgabeblack@google.com};
27312853Sgabeblack@google.com
27412853Sgabeblack@google.com/*
27512853Sgabeblack@google.com * The "Console Terminal Block" portion of the HWRPB.
27612853Sgabeblack@google.com */
27712853Sgabeblack@google.comstruct rpb_ctb {
27812853Sgabeblack@google.com    long rpb_type;		/* 000: console type */
27912853Sgabeblack@google.com    long rpb_unit;		/* 008: console unit */
28012853Sgabeblack@google.com    long rpb_resv;		/* 010: reserved */
28112853Sgabeblack@google.com    long rpb_length;		/* 018: byte length of device dep portion */
28212853Sgabeblack@google.com    long rpb_first;		/* 000: first field of device dep portion */
28312853Sgabeblack@google.com};
28412853Sgabeblack@google.com
28512853Sgabeblack@google.com/*
28612853Sgabeblack@google.com * The physical/virtual map for the console routine block.
28712853Sgabeblack@google.com */
28812853Sgabeblack@google.comstruct rpb_map {
28912853Sgabeblack@google.com    long rpb_virt;		/* virtual address for map entry */
29012853Sgabeblack@google.com    long rpb_phys;		/* phys address for map entry */
29112853Sgabeblack@google.com    long rpb_pgcount;		/* page count for map entry */
29212853Sgabeblack@google.com};
29312853Sgabeblack@google.com
29412853Sgabeblack@google.com/*
29512853Sgabeblack@google.com * The "Console Routine Block" portion of the HWRPB.
29612853Sgabeblack@google.com * Note: the "offsets" are all relative to the start of the HWRPB (HWRPB_ADDR).
29712853Sgabeblack@google.com */
29812853Sgabeblack@google.comstruct rpb_crb {
29912853Sgabeblack@google.com    long rpb_va_disp;		/* va of call-back dispatch rtn */
30012853Sgabeblack@google.com    long rpb_pa_disp;		/* pa of call-back dispatch rtn */
30112853Sgabeblack@google.com    long rpb_va_fixup;		/* va of call-back fixup rtn */
30212853Sgabeblack@google.com    long rpb_pa_fixup;		/* pa of call-back fixup rtn */
30312853Sgabeblack@google.com    long rpb_num;		/* number of entries in phys/virt map */
30412853Sgabeblack@google.com    long rpb_mapped_pages;	/* Number of pages to be mapped */
30512853Sgabeblack@google.com    struct rpb_map rpb_map[1];	/* first instance of a map entry */
30612853Sgabeblack@google.com};
30712853Sgabeblack@google.com
30812853Sgabeblack@google.com/*
30912853Sgabeblack@google.com * These macros define where within the HWRPB the CTB and CRB are located.
31012853Sgabeblack@google.com */
31112853Sgabeblack@google.com#define CTB_SETUP \
31212853Sgabeblack@google.com    ((struct rpb_ctb *) ((long)hwrpb_addr + (long)(hwrpb_addr->rpb_ctb_off)))
31312853Sgabeblack@google.com
31412853Sgabeblack@google.com#define CRB_SETUP \
31512853Sgabeblack@google.com    ((struct rpb_crb *) ((long)hwrpb_addr + (long)(hwrpb_addr->rpb_crb_off)))
31612853Sgabeblack@google.com
31712853Sgabeblack@google.com/*
31812853Sgabeblack@google.com * The "Dynamic System Recognition" portion of the HWRPB.
31912853Sgabeblack@google.com * It is used to obtain the platform specific data need to allow
32012853Sgabeblack@google.com * the platform define the platform name, the platform SMM and LURT
32112853Sgabeblack@google.com * data for software licensing
32212853Sgabeblack@google.com */
32312853Sgabeblack@google.comstruct rpb_dsr {
32412853Sgabeblack@google.com    long rpb_smm;		/* SMM nubber used by LMF	*/
32512853Sgabeblack@google.com    ulong rpb_lurt_off;		/* offset to LURT table		*/
32612853Sgabeblack@google.com    ulong rpb_sysname_off;	/* offset to sysname char count	*/
32712853Sgabeblack@google.com    int	lurt[10];		/* XXM has one LURT entry	*/
32812853Sgabeblack@google.com};
32912853Sgabeblack@google.com