rpb.h revision 8012
1298SN/A/*
22188SN/ACopyright 1990 Hewlett-Packard Development Company, L.P.
3298SN/A
4298SN/APermission is hereby granted, free of charge, to any person obtaining a copy of
5298SN/Athis software and associated documentation files (the "Software"), to deal in
6298SN/Athe Software without restriction, including without limitation the rights to
7298SN/Ause, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
8298SN/Aof the Software, and to permit persons to whom the Software is furnished to do
9298SN/Aso, subject to the following conditions:
10298SN/A
11298SN/AThe above copyright notice and this permission notice shall be included in all
12298SN/Acopies or substantial portions of the Software.
13298SN/A
14298SN/ATHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15298SN/AIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16298SN/AFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17298SN/AAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18298SN/ALIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19298SN/AOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20298SN/ASOFTWARE.
21298SN/A*/
22298SN/A
23298SN/A/*
24298SN/A *	"@(#)rpb.h	9.2	(ULTRIX/OSF)	10/30/91"
25298SN/A */
26298SN/A/*
272665Ssaidi@eecs.umich.edu * Defines for the architected startup addresses.
282665Ssaidi@eecs.umich.edu */
29298SN/A
30298SN/A#define HWRPB_ADDR	0x10000000	/* 256 MB */
311642SN/A#define BOOT_ADDR	0x20000000	/* 512 MB */
32954SN/A#define PGTBL_ADDR	0x40000000	/*   1 GB */
33956SN/A
34956SN/A/*
354078Sbinkertn@umich.edu * Values for the "haltcode" field in the per-cpu portion of the HWRPB
36299SN/A *
37299SN/A * Bit defines for the "sysvar" field in the HWRPB.
385529Snate@binkert.org * Each platform has different values for SYSBOARD and IOBOARD bits.
392170SN/A */
403089Ssaidi@eecs.umich.edu#define HALT_PWRUP	0		/* power up */
411717SN/A#define HALT_OPR	1		/* operator issued halt cmd */
422680Sktlim@umich.edu#define HALT_KSTK	2		/* kernel stack not valid */
432313SN/A#define HALT_SCBB	3		/* invalid SCBB */
445529Snate@binkert.org#define HALT_PTBR	4		/* invalid PTBR */
453565Sgblack@eecs.umich.edu#define HALT_EXE	5		/* kernel executed halt instruction */
46298SN/A#define HALT_DBLE	6		/* double error abort */
475606Snate@binkert.org
48298SN/A/*
49695SN/A * Bit defines for the "state" field in the per-cpu portion of the HWRPB
50695SN/A */
51954SN/A#define STATE_BIP	0x00000001	/* bootstrap in progress */
521052SN/A#define STATE_RC	0x00000002	/* restart capable */
535780Ssteve.reinhardt@amd.com#define STATE_PA	0x00000004	/* processor available to OS */
542080SN/A#define STATE_PP	0x00000008	/* processor present */
555780Ssteve.reinhardt@amd.com#define STATE_OH	0x00000010	/* operator halted */
56298SN/A#define STATE_CV	0x00000020	/* context valid */
57299SN/A#define STATE_PV	0x00000040	/* PALcode valid */
581052SN/A#define STATE_PMV	0x00000080	/* PALcode memory valid */
59729SN/A#define STATE_PL	0x00000100	/* PALcode loaded */
602107SN/A#define STATE_HALT_MASK	0x00ff0000	/* Mask for Halt Requested field */
61298SN/A#define STATE_DEFAULT	0x00000000	/* Default (no specific action) */
625504Snate@binkert.org#define STATE_SVRS_TERM	0x00010000	/* SAVE_TERM/RESTORE_TERM Exit */
635504Snate@binkert.org#define STATE_COLD_BOOT	0x00020000	/* Cold Bootstrap Requested */
645780Ssteve.reinhardt@amd.com#define STATE_WARM_BOOT	0x00030000	/* Warm Bootstrap Requested */
655780Ssteve.reinhardt@amd.com#define STATE_HALT	0x00040000	/* Remain halted (no restart) */
665504Snate@binkert.org
675504Snate@binkert.org
68298SN/A#define SV_PF_RSVD	0x00000000	/* RESERVED */
695504Snate@binkert.org#define SV_RESERVED	0x00000000	/* All STS bits; zero for backward compat. */
705504Snate@binkert.org#define SV_MPCAP	0x00000001	/* MP capable */
715504Snate@binkert.org#define SV_PF_UNITED	0x00000020	/* United */
725504Snate@binkert.org#define SV_PF_SEPARATE	0x00000040	/* Separate */
735504Snate@binkert.org#define SV_PF_FULLBB	0x00000060	/* Full battery backup */
745504Snate@binkert.org#define SV_POWERFAIL	0x000000e0	/* Powerfail implementation */
755504Snate@binkert.org#define SV_PF_RESTART	0x00000100	/* Powerfail restart */
765529Snate@binkert.org
775504Snate@binkert.org#define SV_GRAPHICS	0x00000200	/* Embedded graphics processor */
785504Snate@binkert.org
795504Snate@binkert.org#define SV_STS_MASK	0x0000fc00	/* STS bits - system and I/O board   */
805504Snate@binkert.org#define SV_SANDPIPER	0x00000400	/* others define system platforms.   */
815504Snate@binkert.org#define SV_FLAMINGO	0x00000800	/* STS BIT SETTINGS */
825504Snate@binkert.org#define SV_HOTPINK	0x00000c00	/* STS BIT SETTINGS */
835504Snate@binkert.org#define SV_FLAMINGOPLUS	0x00001000	/* STS BIT SETTINGS */
845504Snate@binkert.org#define SV_ULTRA	0x00001400	/* STS BIT SETTINGS */
855504Snate@binkert.org#define SV_SANDPLUS	0x00001800	/* STS BIT SETTINGS */
865504Snate@binkert.org#define SV_SANDPIPER45	0x00001c00	/* STS BIT SETTINGS */
875504Snate@binkert.org#define SV_FLAMINGO45	0x00002000	/* STS BIT SETTINGS */
885504Snate@binkert.org
895529Snate@binkert.org#define SV_SABLE	0x00000400	/* STS BIT SETTINGS */
905504Snate@binkert.org
915504Snate@binkert.org#define SV_KN20AA	0x00000400	/* STS BIT SETTINGS */
925504Snate@binkert.org
935504Snate@binkert.org/*
945504Snate@binkert.org * Values for the "console type" field in the CTB portion of the HWRPB
955504Snate@binkert.org */
965606Snate@binkert.org#define CONS_NONE	0		/* no console present */
975504Snate@binkert.org#define CONS_SRVC	1		/* console is service processor */
985504Snate@binkert.org#define CONS_DZ		2		/* console is dz/dl VT device */
995504Snate@binkert.org#define CONS_GRPH	3		/* cons is graphics dev w/ dz/dl keybd*/
1005504Snate@binkert.org#define CONS_REM	4		/* cons is remote, protocal enet/MOP */
1015504Snate@binkert.org
1025504Snate@binkert.org/*
1035504Snate@binkert.org * PALcode variants that we're interested in.
1045504Snate@binkert.org * Used as indices into the "palrev_avail" array in the per-cpu portion
1055504Snate@binkert.org * of the HWRPB.
1065504Snate@binkert.org */
1075504Snate@binkert.org#define PALvar_reserved	0
1085504Snate@binkert.org#define PALvar_OpenVMS	1
1095529Snate@binkert.org#define PALvar_OSF1	2
1105504Snate@binkert.org
1115504Snate@binkert.org#include <sys/types.h>
1125504Snate@binkert.org/*
1135504Snate@binkert.org * The Alpha restart parameter block, which is a page or 2 in low memory
1145504Snate@binkert.org */
1155504Snate@binkert.orgstruct rpb {
1165606Snate@binkert.org    struct rpb *rpb_selfref;	/* 000: physical self-reference */
1175504Snate@binkert.org    long   rpb_string;		/* 008: contains string "HWRPB" */
1185504Snate@binkert.org    long   rpb_vers;		/* 010: HWRPB version number */
1195504Snate@binkert.org    u_long rpb_size;		/* 018: bytes in RPB perCPU CTB CRB MEMDSC */
1205504Snate@binkert.org    u_long rpb_cpuid;		/* 020: primary cpu id */
1215504Snate@binkert.org    u_long rpb_pagesize;	/* 028: page size in bytes */
1225504Snate@binkert.org    u_long rpb_addrbits;	/* 030: number of phys addr bits */
1235504Snate@binkert.org    u_long rpb_maxasn;		/* 038: max valid ASN */
1245504Snate@binkert.org    char   rpb_ssn[16];		/* 040: system serial num: 10 ascii chars */
1255504Snate@binkert.org    u_long rpb_systype;		/* 050: system type */
1265504Snate@binkert.org    long   rpb_sysvar;		/* 058: system variation */
1275504Snate@binkert.org    long   rpb_sysrev;		/* 060: system revision */
1285504Snate@binkert.org    u_long rpb_clock;		/* 068: scaled interval clock intr freq */
1295504Snate@binkert.org    u_long rpb_counter;		/* 070: cycle counter frequency */
1305504Snate@binkert.org    u_long rpb_vptb;		/* 078: virtual page table base */
1315504Snate@binkert.org    long   rpb_res1;		/* 080: reserved */
1325780Ssteve.reinhardt@amd.com    u_long rpb_trans_off;	/* 088: offset to translation buffer hint */
1335780Ssteve.reinhardt@amd.com    u_long rpb_numprocs;	/* 090: number of processor slots */
1345741Snate@binkert.org    u_long rpb_slotsize;	/* 098: per-cpu slot size */
1355741Snate@binkert.org    u_long rpb_percpu_off;	/* 0A0: offset to per_cpu slots */
1365741Snate@binkert.org    u_long rpb_num_ctb;		/* 0A8: number of CTBs */
1375741Snate@binkert.org    u_long rpb_ctb_size;	/* 0B0: bytes in largest CTB */
1385741Snate@binkert.org    u_long rpb_ctb_off;		/* 0B8: offset to CTB (cons term block) */
1395741Snate@binkert.org    u_long rpb_crb_off;		/* 0C0: offset to CRB (cons routine block) */
1405504Snate@binkert.org    u_long rpb_mdt_off;		/* 0C8: offset to memory descriptor table */
1415808Snate@binkert.org    u_long rpb_config_off;	/* 0D0: offset to config data block */
1425808Snate@binkert.org    u_long rpb_fru_off;		/* 0D8: offset to FRU table */
1435808Snate@binkert.org    void   (*rpb_saveterm)();	/* 0E0: virt addr of save term routine */
1445808Snate@binkert.org    long   rpb_saveterm_pv;	/* 0E8: proc value for save term routine */
1455808Snate@binkert.org    void   (*rpb_rstrterm)();	/* 0F0: virt addr of restore term routine */
1465808Snate@binkert.org    long   rpb_rstrterm_pv;	/* 0F8: proc value for restore term routine */
1475808Snate@binkert.org    void   (*rpb_restart)();	/* 100: virt addr of CPU restart routine */
1485808Snate@binkert.org    long   rpb_restart_pv;	/* 108: proc value for CPU restart routine */
1495808Snate@binkert.org    long   rpb_software;	/* 110: used to determine presence of kdebug */
1505504Snate@binkert.org    long   rpb_hardware;	/* 118: reserved for hardware */
1515504Snate@binkert.org    long   rpb_checksum;	/* 120: checksum of prior entries in rpb */
1525504Snate@binkert.org    long   rpb_rxrdy;		/* 128: receive ready bitmask */
1535606Snate@binkert.org    long   rpb_txrdy;		/* 130: transmit ready bitmask */
1545606Snate@binkert.org    u_long rpb_dsr_off;		/* 138: Dynamic System Recog. offset */
1555504Snate@binkert.org};
1565504Snate@binkert.org
1575780Ssteve.reinhardt@amd.com#define rpb_kdebug rpb_software
1585780Ssteve.reinhardt@amd.com
1595504Snate@binkert.org#define OSF_HWRPB_ADDR	((vm_offset_t)(-1L << 23))
1605504Snate@binkert.org
1615504Snate@binkert.org/*
1625504Snate@binkert.org * This is the format for the boot/restart HWPCB.  It must match the
1635504Snate@binkert.org * initial fields of the pcb structure as defined in pcb.h, but must
1645504Snate@binkert.org * additionally contain the appropriate amount of padding to line up
165711SN/A * with formats used by other palcode types.
166711SN/A */
1675504Snate@binkert.orgstruct bootpcb {
1685504Snate@binkert.org    long   rpb_ksp;		/* 000: kernel stack pointer */
169310SN/A    long   rpb_usp;		/* 008: user stack pointer */
1705504Snate@binkert.org    long   rpb_ptbr;		/* 010: page table base register */
1715504Snate@binkert.org    int    rpb_cc;		/* 018: cycle counter */
1723373Sstever@eecs.umich.edu    int    rpb_asn;		/* 01C: address space number */
1735504Snate@binkert.org    long   rpb_proc_uniq;	/* 020: proc/thread unique value */
1745504Snate@binkert.org    long   rpb_fen;		/* 028: floating point enable */
1755504Snate@binkert.org    long   rpb_palscr[2];	/* 030: pal scratch area */
1765504Snate@binkert.org    long   rpb_pcbpad[8];	/* 040: padding for fixed size */
1775504Snate@binkert.org};
1785504Snate@binkert.org
1795504Snate@binkert.org/*
1805504Snate@binkert.org * Inter-Console Communications Buffer
1815504Snate@binkert.org * Used for the primary processor to communcate with the console
1825504Snate@binkert.org * of secondary processors.
1835504Snate@binkert.org */
1845504Snate@binkert.orgstruct iccb {
1855504Snate@binkert.org    u_int       iccb_rxlen;     /* receive length in bytes      */
1865504Snate@binkert.org    u_int       iccb_txlen;     /* transmit length in bytes     */
1875504Snate@binkert.org    char        iccb_rxbuf[80]; /* receive buffer               */
1885504Snate@binkert.org    char        iccb_txbuf[80]; /* transmit buffer              */
1895504Snate@binkert.org};
1905504Snate@binkert.org
1915504Snate@binkert.org/*
1925504Snate@binkert.org * The per-cpu portion of the Alpha HWRPB.
1935504Snate@binkert.org * Note that the main portion of the HWRPB is of variable size,
1945504Snate@binkert.org * hence this must be a separate structure.
1955504Snate@binkert.org *
1965504Snate@binkert.org */
1975504Snate@binkert.orgstruct rpb_percpu {
1985504Snate@binkert.org    struct bootpcb rpb_pcb;	/* 000: boot/restart HWPCB */
1995504Snate@binkert.org    long   rpb_state;		/* 080: per-cpu state bits */
2005504Snate@binkert.org    long   rpb_palmem;		/* 088: palcode memory length */
2015504Snate@binkert.org    long   rpb_palscratch;	/* 090: palcode scratch length */
2025504Snate@binkert.org    long   rpb_palmem_addr;	/* 098: phys addr of palcode mem space */
2035504Snate@binkert.org    long   rpb_palscratch_addr;	/* 0A0: phys addr of palcode scratch space */
2045504Snate@binkert.org    long   rpb_palrev;		/* 0A8: PALcode rev required */
2055504Snate@binkert.org    long   rpb_proctype;	/* 0B0: processor type */
2065504Snate@binkert.org    long   rpb_procvar;		/* 0B8: processor variation */
2075504Snate@binkert.org    long   rpb_procrev;		/* 0C0: processor revision */
2085780Ssteve.reinhardt@amd.com    char   rpb_procsn[16];	/* 0C8: proc serial num: 10 ascii chars */
2095780Ssteve.reinhardt@amd.com    long   rpb_logout;		/* 0D8: phys addr of logout area */
2105780Ssteve.reinhardt@amd.com    long   rpb_logout_len;	/* 0E0: length in bytes of logout area */
2115780Ssteve.reinhardt@amd.com    long   rpb_haltpb;		/* 0E8: halt pcb base */
2125780Ssteve.reinhardt@amd.com    long   rpb_haltpc;		/* 0F0: halt pc */
2135780Ssteve.reinhardt@amd.com    long   rpb_haltps;		/* 0F8: halt ps */
2145780Ssteve.reinhardt@amd.com    long   rpb_haltal;		/* 100: halt arg list (R25) */
2155780Ssteve.reinhardt@amd.com    long   rpb_haltra;		/* 108: halt return address (R26) */
2165780Ssteve.reinhardt@amd.com    long   rpb_haltpv;		/* 110: halt procedure value (R27) */
2175780Ssteve.reinhardt@amd.com    long   rpb_haltcode;	/* 118: reason for halt */
2185780Ssteve.reinhardt@amd.com    long   rpb_software;	/* 120: for software */
2195780Ssteve.reinhardt@amd.com    struct iccb rpb_iccb;       /* 128: inter-console communications buffer */
2205780Ssteve.reinhardt@amd.com    long   rpb_palrev_avail[16];/* 1D0: PALcode revs available */
2215780Ssteve.reinhardt@amd.com    long   rpb_pcrsvd[6];	/* 250: reserved for arch use */
2225780Ssteve.reinhardt@amd.com/* the dump stack grows from the end of the rpb page not to reach here */
2235504Snate@binkert.org};
2245504Snate@binkert.org
2255529Snate@binkert.org/* The firmware revision is in the (unused) first entry of palrevs available */
2265504Snate@binkert.org#define rpb_firmrev rpb_palrev_avail[0]
2275504Snate@binkert.org
2285504Snate@binkert.org/*
2295504Snate@binkert.org * The memory cluster descriptor.
2305504Snate@binkert.org */
2315504Snate@binkert.orgstruct rpb_cluster {
2325504Snate@binkert.org    long   rpb_pfn;		/* 000: starting PFN of this cluster */
2335504Snate@binkert.org    long   rpb_pfncount;	/* 008: count of PFNs in this cluster */
2345504Snate@binkert.org    long   rpb_pfntested;	/* 010: count of tested PFNs in cluster */
2355504Snate@binkert.org    long   rpb_va;		/* 018: va of bitmap */
2365504Snate@binkert.org    long   rpb_pa;		/* 020: pa of bitmap */
2375504Snate@binkert.org    long   rpb_checksum;	/* 028: checksum of bitmap */
2385529Snate@binkert.org    long   rpb_usage;		/* 030: usage of cluster */
2395504Snate@binkert.org};
2405504Snate@binkert.org#define CLUSTER_USAGE_OS	((long)0)
2415504Snate@binkert.org#define CLUSTER_USAGE_PAL	((long)1)
2425504Snate@binkert.org#define CLUSTER_USAGE_NVRAM	((long)2)
2435504Snate@binkert.org
2445504Snate@binkert.org/*
2455504Snate@binkert.org * The "memory descriptor table" portion of the HWRPB.
2465504Snate@binkert.org * Note that the main portion of the HWRPB is of variable size and there is a
2475504Snate@binkert.org * variable number of per-cpu slots, hence this must be a separate structure.
2485504Snate@binkert.org * Also note that the memory descriptor table contains a fixed portion plus
2495504Snate@binkert.org * a variable number of "memory cluster descriptors" (one for each "cluster"
2505504Snate@binkert.org * of memory).
2515529Snate@binkert.org */
2525504Snate@binkert.orgstruct rpb_mdt {
2535504Snate@binkert.org    long   rpb_checksum;	/* 000: checksum of entire mem desc table */
2545504Snate@binkert.org    long   rpb_impaddr;		/* 008: PA of implementation dep info */
2555504Snate@binkert.org    long   rpb_numcl;		/* 010: number of clusters */
2565504Snate@binkert.org    struct rpb_cluster rpb_cluster[1];	/* first instance of a cluster */
2575504Snate@binkert.org};
2585504Snate@binkert.org
2595504Snate@binkert.org/*
2605504Snate@binkert.org * The "Console Terminal Block" portion of the HWRPB, for serial line
2615504Snate@binkert.org * UART console device.
2625504Snate@binkert.org */
2635504Snate@binkert.orgstruct ctb_tt {
2645529Snate@binkert.org    long   ctb_type;		/* 000: console type */
2655504Snate@binkert.org    long   ctb_unit;		/* 008: console unit */
2665504Snate@binkert.org    long   ctb_resv;		/* 010: reserved */
2675504Snate@binkert.org    long   ctb_length;		/* 018: byte length of device dep */
2685504Snate@binkert.org                                /* portion */
2695504Snate@binkert.org    long   ctb_csr;		/* 020: CSR Address */
2705606Snate@binkert.org    long   ctb_tivec;		/* 028: <63>=tie; interrupt vector */
2715606Snate@binkert.org    long   ctb_rivec;		/* 030: <63>=rie; interrupt vector */
2725504Snate@binkert.org    long   ctb_baud;		/* 038: baud rate */
2735504Snate@binkert.org    long   ctb_put_sts;		/* 040: PUTS callback extended status */
2745780Ssteve.reinhardt@amd.com    long   ctb_get_sts;		/* 048: GETS callback extended status */
2755780Ssteve.reinhardt@amd.com    long   ctb_rsvd[1];		/* 050: reserved for console use */
2765504Snate@binkert.org};
2775504Snate@binkert.org
2785504Snate@binkert.org/*
2795504Snate@binkert.org * The "Console Terminal Block" portion of the HWRPB.
2805504Snate@binkert.org */
2815504Snate@binkert.orgstruct rpb_ctb {
282310SN/A    long   rpb_type;		/* 000: console type */
283299SN/A    long   rpb_unit;		/* 008: console unit */
2845504Snate@binkert.org    long   rpb_resv;		/* 010: reserved */
2852188SN/A    long   rpb_length;		/* 018: byte length of device dep portion */
2865504Snate@binkert.org    long   rpb_first;		/* 000: first field of device dep portion */
2875504Snate@binkert.org};
2885504Snate@binkert.org
2892235SN/A/*
2905504Snate@binkert.org * The physical/virtual map for the console routine block.
2915504Snate@binkert.org */
2923368Sstever@eecs.umich.edustruct rpb_map {
2935504Snate@binkert.org        long	rpb_virt;		/* virtual address for map entry */
2945504Snate@binkert.org        long	rpb_phys;		/* phys address for map entry */
2955504Snate@binkert.org        long	rpb_pgcount;		/* page count for map entry */
2965504Snate@binkert.org};
2975504Snate@binkert.org
2985504Snate@binkert.org/*
2993368Sstever@eecs.umich.edu * The "Console Routine Block" portion of the HWRPB.
3005504Snate@binkert.org * Note: the "offsets" are all relative to the start of the HWRPB (HWRPB_ADDR).
3015504Snate@binkert.org */
3025504Snate@binkert.orgstruct rpb_crb {
3032188SN/A        long	rpb_va_disp;		/* va of call-back dispatch rtn */
3042188SN/A        long	rpb_pa_disp;		/* pa of call-back dispatch rtn */
3055504Snate@binkert.org        long	rpb_va_fixup;		/* va of call-back fixup rtn */
3065504Snate@binkert.org        long	rpb_pa_fixup;		/* pa of call-back fixup rtn */
3075504Snate@binkert.org        long	rpb_num;		/* number of entries in phys/virt map */
3085504Snate@binkert.org        long	rpb_mapped_pages;	/* Number of pages to be mapped */
3095504Snate@binkert.org        struct	rpb_map rpb_map[1];	/* first instance of a map entry */
3102188SN/A};
3115780Ssteve.reinhardt@amd.com
3125780Ssteve.reinhardt@amd.com/*
3135504Snate@binkert.org * These macros define where within the HWRPB the CTB and CRB are located.
3145504Snate@binkert.org */
3155504Snate@binkert.org#define CTB_SETUP ((struct rpb_ctb *) ((long)hwrpb_addr + 	\
3165504Snate@binkert.org                        (long)(hwrpb_addr->rpb_ctb_off)))
3175504Snate@binkert.org#define CRB_SETUP ((struct rpb_crb *) ((long)hwrpb_addr + 	\
3182235SN/A                        (long)(hwrpb_addr->rpb_crb_off)))
3195504Snate@binkert.org
3205504Snate@binkert.org/*
3215504Snate@binkert.org * The "Dynamic System Recognition" portion of the HWRPB.
3225504Snate@binkert.org * It is used to obtain the platform specific data need to allow
3235504Snate@binkert.org * the platform define the platform name, the platform SMM and LURT
3243368Sstever@eecs.umich.edu * data for software licensing
3255504Snate@binkert.org */
326struct rpb_dsr {
327        long	rpb_smm;		/* SMM nubber used by LMF	*/
328        u_long	rpb_lurt_off;		/* offset to LURT table		*/
329        u_long	rpb_sysname_off;	/* offset to sysname char count	*/
330        int	lurt[10];		/* XXM has one LURT entry	*/
331};
332